我试图为慈善机构制作表格,允许员工通过网站查看和更新存储在SQL数据库中的受害者记录。我已设法显示记录并创建一个允许更改记录的表单,但是当我输入变量时,我收到SYNTAX错误。
$updateSQL="UPDATE Victims SET victimFName=".$victimFN." WHERE victimId=".$id."";
$exeupdateSQL= mysql_query($updateSQL) or die (mysql_error());
echo "The Record has been updated";
我收到错误: '您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在' WHERE victimId ='附近使用正确的语法。在第1行'
然后我研究了SQL注入并更改了代码:
$updateSQL="UPDATE Victims SET victimFName=".mysql_real_escape_string($_POST['victimFName']).";
WHERE victimId=".mysql_real_escape_string($_POST['victimId'])."";
exeupdateSQL= mysql_query($updateSQL) or die (mysql_error());
echo "The Record has been updated";
这仍然没有用。
我试图通过在SQL查询中输入数据来替换我的变量$ VictimFN和$ id,并且代码正常工作,更新记录。如:
$updateSQL="UPDATE Victims SET victimFName='Mary Smith' WHERE victimId='1'";
$exeupdateSQL= mysql_query($updateSQL) or die (mysql_error());
echo "The Record has been updated";
我对编程很新,并且想知道如何解决这个问题,因为问题与我的变量有关。
感谢您的帮助,我已经确定了代码的问题,现在已将其修复为:
$updateSQL="UPDATE Victims SET victimFName='".mysql_real_escape_string($_POST['victimFName'])."' WHERE victimId='".mysql_real_escape_string($_POST['victimId'])."'";
$exeupdateSQL=mysql_query($updateSQL) or die (mysql_error());
echo "The Record has been updated";
echo "<br><a href=ViewVictimRequest.php>View Updated Record</a>";
现在没有错误,但是记录表明它们不会更新。有没有什么办法解决这一问题?
提前感谢您的回复,并对给您带来的不便表示歉意!
答案 0 :(得分:0)
正确的方法是:
$updateSQL="UPDATE Victims SET victimFName='".mysql_real_escape_string($_POST['victimFName'])."' WHERE victimId='".mysql_real_escape_string($_POST['victimId'])."'";
您的$ _POST值是字符串,因此您需要将它们用单引号'
括起来。同样在;
之前移除分号WHERE
,它会破坏字符串。
Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
答案 1 :(得分:0)
你有一个错误的分号和缺少引号。这是您查询的更简洁版本:
$updateSQL="UPDATE Victims SET victimFName='".mysql_real_escape_string($_POST['victimFName'])."'
WHERE victimId=".mysql_real_escape_string($_POST['victimId']);
或者
$fname = mysql_real_escape_string($_POST['victimFName']);
$id = mysql_real_escape_string($_POST['victimId']);
$updateSQL="UPDATE Victims SET victimFName='{$fname}' WHERE victimId={$id}";