-1

我正在制作个人资料更新页面,但它不起作用。为此,我检查表user_info是否已有信息;如果是,我用 mysqlUPDATE查询更新信息,否则,我插入新信息。

我一直收到错误“错误”。

PS:

  • 这不是注册页面,注册是在另一张桌子上进行的。
  • $new_name 变量我打算在另一个表中回答它,即基本表。
<?php

session_start();
include('include/connection.php');
if (isset($_SESSION['id']))

    {
    $id = $_SESSION['id'];
    $new_name = (isset($_POST['name']) ? $_POST['name'] : null);
    $location = (isset($_POST['location']) ? $_POST['location'] : null);
    $bio = (isset($_POST['bio']) ? $_POST['bio'] : null);
    $job = (isset($_POST['job']) ? $_POST['job'] : null);
    $birthday = (isset($_POST['birthday_year']) ? $_POST['birthday_year'] : null) . '-' . (isset($_POST['birthday_month']) ? $_POST['birthday_month'] : null) . '-' . (isset($_POST['birthday_day']) ? $_POST['birthday_day'] : null);
    $phone = (isset($_POST['phone']) ? $_POST['phone'] : null);

    $result_info = mysql_query("SELECT * FROM user_info WHERE(id='".$id."')");  
    $n_info = mysql_num_rows ($result_info);
    if ( $n_info = 0 )
    {
    $q = mysql_query ("INSERT INTO user_info (id , dateOfBirth , phoneNumber , bio , location , work) VALUES ('$id' , '$birthday' , '$phone' , '$bio' , '$location' , '$job' )")
    ;
    }
    else
    {
    $q = mysql_query ("UPDATE user_info (id  , dateOfBirth , phoneNumber , bio , location , work) VALUES ('$id' , '$birthday' , '$phone' , '$bio' , '$location' , '$job' )")
    ;
    }
    $query = $q;
    $req = $cnx->prepare($query);
    $req->execute();
    if ($query){
            echo 'Yes';
    }else{
            echo 'Error';
    } 
    }

else{
header('Location: index.php');
}

?>
4

2 回答 2

0

更改您的 UPDATE 查询

From:
$q = mysql_query ("UPDATE user_info (id  , dateOfBirth , phoneNumber , bio , location , work) VALUES ('$id' , '$birthday' , '$phone' , '$bio' , '$location' , '$job' )")

To:
$q = mysql_query ("UPDATE user_info SET id='$id' , dateOfBirth = '$birthday', phoneNumber = '$phone' , bio = '$bio', location = '$location', work = '$job'");

尝试直接在数据库上使用变量上的替代值运行查询,以便更好地查看错误。

于 2013-07-17T11:36:52.070 回答
0

您的 UPDATE 查询语法错误,您使用的是 INSERT 语法。UPDATE 的正确语法是:

UPDATE table SET field1 = 'val1', field2 = 'val2', field3 = 'val3'

您可能还需要一个 where 子句,因此它只更新目标记录而不是所有记录。

看起来您正在混合mysql_*PDO 或 MySQLi。您将 mysql 结果资源传递给PDO::prepare()MySQLi::prepare()错误的。PDO:prepare()应该给定 SQL 字符串,并且您应该使用占位符并绑定您的输入,而不是将它们连接到 SQL 中。

于 2013-07-17T11:13:06.043 回答