2012-01-05 35 views
-4

尽管弹出了一条错误消息,但我的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>'; 

    } 
?> 

任何人都可以在这里看到的解决方案? 谢谢

+10

你的代码是SQL注入攻击敞开的。 – 2012-01-05 20:09:12

+0

看来'meeting_id'是一个整数类型的列,因此'$ 1'没有引号。第二:这个代码是_highly_ insecure!验证_any_输入!最后:回答查询,看看结果如何。 – KingCrunch 2012-01-05 20:09:52

+1

http://php.net/manual/en/security.database.sql-injection.php – 2012-01-05 20:10:35

回答

1

您正在结果集上执行两次查询。 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

11

您正在运行mysql_query()两次;一旦与(正确)查询,第二次

if (!mysql_query($result)) 

与之前的查询结果。这将导致错误。

你可能想

if (!mysql_fetch_object($result)) 

或类似的东西。

此外,正如评论部分所指出的,您的PHP代码易受SQL injection的影响,您应该修复此问题。

+1

+1干得好。 – Paulpro 2012-01-05 20:10:55

+1

您可能还想提及他的代码中的漏洞并将其链接到此处:http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php或告诉他关于PDO – Paulpro 2012-01-05 20:12:10

+0

@user这总是一个好的点。我已经在上面的评论部分做过了,但我会将其添加到答案 – 2012-01-05 20:17:05

1

您对您的查询调用mysql_query(),然后你再称之为上查询的结果。这是你的问题所在。删除第二个mysql_query()呼叫。