尽管“SQL语法错误”消息成功执行
问题描述:
尽管弹出了一条错误消息,但我的php代码正在成功执行。该代码删除一行从我的一个表,但会显示以下错误信息:尽管“SQL语法错误”消息成功执行
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
我的PHP代码如下:
<?php
$id = $_GET['meeting_id'];
$username = $_GET['username'];
$result = mysql_query("DELETE FROM attendees WHERE meeting_id = '$id' AND username = '$username'")
or die(mysql_error());
if (!mysql_query($result))
{
die('Error: ' . mysql_error());
}
else
{
echo '<h2>The User Has Been Removed From The Meeting</h2>';
}
?>
任何人都可以在这里看到的解决方案? 谢谢
答
您正在结果集上执行两次查询。 BTW
$result = mysql_query("DELETE FROM attendees WHERE meeting_id = '$id' AND username = '$username'");
if (!$result)
{
die('Error: ' . mysql_error());
}
else
{
echo '<h2>The User Has Been Removed From The Meeting</h2>';
}
:试试这个代码很容易出现SQL注入
+0
谢谢,它现在可行! :) – user1114080 2012-01-05 20:14:05
答
您正在运行mysql_query()
两次;一旦与(正确)查询,第二次
if (!mysql_query($result))
与之前的查询结果。这将导致错误。
你可能想
if (!mysql_fetch_object($result))
或类似的东西。
此外,正如评论部分所指出的,您的PHP代码易受SQL injection的影响,您应该修复此问题。
答
您对您的查询调用mysql_query()
,然后你再称之为上查询的结果。这是你的问题所在。删除第二个mysql_query()
呼叫。
你的代码是SQL注入攻击敞开的。 – 2012-01-05 20:09:12
看来'meeting_id'是一个整数类型的列,因此'$ 1'没有引号。第二:这个代码是_highly_ insecure!验证_any_输入!最后:回答查询,看看结果如何。 – KingCrunch 2012-01-05 20:09:52
http://php.net/manual/en/security.database.sql-injection.php – 2012-01-05 20:10:35