更新配置文件日期php / mysql不起作用

时间:2013-07-17 11:06:44

标签: php mysql user-profile

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

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

P.S:

  • 这不是注册页面,在另一张桌子上进行注册。
  • $ 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');
}

?>

2 个答案:

答案 0 :(得分: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中。

答案 1 :(得分: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'");

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