2012-01-05 8 views
-4

エラーメッセージがポップアップしても、PHPコードが正常に実行されています。コードは、私のテーブルの1から行が削除されますが、次のエラーメッセージが表示され、次のように「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インジェクションに大きく開いているSQLインジェクションになりやすいです。 –

+0

'meeting_id'は整数型のカラムなので、' $ 1'は引用符なしです。二番目:このコードは_highly_不安です! _any_入力を検証する!最後に、クエリを 'echo'して、結果を確認します。 – KingCrunch

+1

http://php.net/manual/en/security.database.sql-injection.php –

答えて

1

結果セットで2回、クエリを2回実行しています。ところで

$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>'; 

    } 

:これを試してみてください、あなたのコードが

+0

ありがとう、それは今働きます! :) – user1114080

11

mysql_query()を2回実行しています。 (正しい)クエリと2回目のクエリで1回

if (!mysql_query($result)) 

となり、前のクエリの結果となります。これはエラーにつながります。

おそらく

if (!mysql_fetch_object($result)) 

または類似した何かをしたいです。

コメント欄にも指摘されているように、PHPコードはSQL injectionの脆弱性を修正する必要があります。

+1

+1それはいい仕事です。 – Paulpro

+1

また、彼のコードの脆弱性について言及し、ここにリンクすることもできます:http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php、またはPDO – Paulpro

+0

@userについて、常に良いポイント。私はすでに上記のコメントのセクションでそれをしましたが、私は答えにそれを追加します –

1

あなたのクエリにmysql_query()を呼び出し、その後、あなたは、クエリの結果に再びそれを呼び出します。これがあなたの問題です。 2番目のmysql_query()コールを削除します。

関連する問題