2011-07-26 15 views
1
$tran = "START TRANSACTION;"; 

    $tran_res = mysql_query($tran); 

    $qry_1 = "INSERT INTO docList (doc_ip , doc_country , doc_ref) VALUES ('$ip' , '$country' , '$http_ref');"; 
    $res_1 = mysql_query($qry_1); 
    if(!$res_1) 
     die ("qry1 fail " . mysql_error()); 

    $ins_id = mysql_insert_id(); 
    if(!$ins_id) 
     die ("ins id fail " . mysql_error()); 
    echo "<b>$ins_id</b>"; 

    $qry_2 = "INSERT INTO docContent (doc_id , cont_date , cont_title , cont_aim , cont_obj , cont_theory , cont_sw , cont_code) VALUES ('$ins_id' , '$dt' , '$title' , '$aim' , '$obj' , '$th' , '$sw' , '$code');"; 

    $res_2 = mysql_query($qry_2); 
    if(!$res_2) 
     die("qry2 fail " . mysql_error()); ` 

の上に次のエラーが返されるの実行:PHP - MySQLのトランザクションの実行エラー

2 qry failYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'login'); if($query->num_rows()>0) return $query->result_array(); } ' at line 1

$qry_2の実行が失敗している影響で

が、私はそれが誤りで当惑していますエラーノートに記載されているような1行目にそのようなコードはありません。さらに、クエリ($qry_2)はMySqlコンソールで正しく実行されます。

+1

あなたの変数を消毒していないように見えます。 – JJJ

+0

@Juhanaあなたは正しいです!それは今働いている。 – AFV

答えて

1

あなたはMySQLサーバーが受け取った実際のクエリを投稿していませんが、mysql_real_escape_string()を使用してSQLにデータを注入したとは思いません。

(データベース内のPHPコードを挿入しようとしていますか?)

+0

はいクエリのコードはどの言語からでも可能ですが、もちろんmysql_escape_ *を使用して 'サニタイズ'した後で修復されています。 – AFV

+0

ありがとう!ノートのために。 – AFV

2

$qry_2の内容を出力すると、実際のSQL文が実行されます。ほとんどの場合、SQLインジェクションの脆弱性があります。挿入する変数の1つに少なくとも'が含まれているため、構文エラーが発生します。

あなたは

$var = "O'Reilly"; 
$sql = "INSERT INTO names (name) VALUES ('$var')"; 

を持っている場合は、と解釈されます

INSERT INTO names (name) VALUES ('O'Reilly'); 

になってしまいます。これを回避するには

'O' - string containing the letter "O" 
Reilly - a field named "Reilly", with no operator between this "field" and the "O" previous 
'); - a weird unterminated string, also with no operator between this and the previous field. 

、あなたはMUSTmysql_real_escape_string()を通して、あなたの変数を渡しますそのようなエラーが発生するのを防ぎます。 O'ReillyO\'Reillyになります。これはクエリで使用するのに「安全」です。

関連する問題