还是新手,我已经到了一个地方,我被卡住,因为我看不出有什么问题。
我有一个用户页面,当我点击一个用户时,它会打开一个显示用户详细信息的不同页面。如果我在输入框中输入数据并单击更新,则运行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;
}
?>
答案 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将逐字解释,除非它被转义。
推荐修复:阅读所有评论中的链接;使用准备好的陈述。