我正在制作个人资料更新页面,但它不起作用。为此,我检查表user_info
是否已有信息;如果是,我使用mysql UPDATE
查询更新信息,否则,我插入新信息。
我一直收到错误“错误”。
P.S:
<?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');
}
?>
答案 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'");
尝试直接在数据库上使用变量上的替换值运行查询,以便更好地查看错误。