SQL Update返回错误消息

时间:2017-10-08 22:02:59

标签: php sql sql-update syntax-error

还是新手,我已经到了一个地方,我被卡住,因为我看不出有什么问题。

我有一个用户页面,当我点击一个用户时,它会打开一个显示用户详细信息的不同页面。如果我在输入框中输入数据并单击更新,则运行update_user_data.php,该数据应采用新数据并更新表。然而,这不起作用。

返回“错误更新记录:您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行的'WHERE username ='jRogers''附近使用正确的语法”< / p>

代码如下。请任何人都能看到我错在哪里?

<?php
require '../php/config.php';

$usernameold = $_POST["username"];
$emailold = $_POST["email"];
$passwordold = $_POST["password"];

$sql = "UPDATE users SET username='$usernameold', email='$emailold', password='$passwordold', WHERE username= '" .$usernameold."'";

if ($con->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $con->error;
}

?>

1 个答案:

答案 0 :(得分:1)

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法在第1行 'WHERE username= 'jRogers''附近使用

MySQL的诀窍是检查字符串点 &#34; 使用&#34;错误标识的位置。

所以:

 ... password='$passwordold', WHERE username= '" .$usernameold."'";
                           ^^^

'WHERE username= 'jRogers之前是逗号,问题是逗号是实体偏差器,不应在该部分的末尾使用。

修复:

删除MySQL指令字之前的尾随逗号。

  

请留意有关SQL和Php中使用的可怕安全性和不良做法的评论。

奖金:

作为commented by John Conde,您的问题是:

  "Parse error: syntax error, unexpected '"'"' 

是由具有奇数/不平衡数量的引号(任一类型)引起的。这可能是由于您无法转义PHP变量(如评论中已提到的严重安全问题)。因此,如果您的任何PHP变量值只包含一对中的一个引用,那么MySQL将逐字解释,除非它被转义。

推荐修复:阅读所有评论中的链接;使用准备好的陈述。