0

このクエリを実行すると false が返されます。これは、クエリが間違っていることを意味します。理由がわかりますか?

$string1 = 'wee';
$string2 = 'wee'; 
$string3 = 'wee'; 
$string4 = 'wee';  

if (isset($_POST['submit'])) {  

    $query = "INSERT INTO data (book, title, content, author)
              VALUES ($string1, $string2, $string3, $string4)";          
    mysql_query($query, $con);    
}

ただし、次のようなものを配置すると、true が返され、正しく挿入されます。

$query = "INSERT into data (book, title, content, author)
          VALUES ('wee', 'wee', 'wee', 'wee')";

そして別の質問: 送信すると、実行時にクエリが 2 回返されるようです。つまり、1 つのクエリで 2 つのレコードが返されます。誰かそれを理解していますか?

さらに情報が必要な場合は、お尋ねください。

前もって感謝します。

4

2 に答える 2

1

この質問には答えがあるように見えますが、ユーザー入力をクエリで直接使用しないでください。SQL インジェクションのような脆弱性の穴が開いてしまうためです (これは悪いことです)。

php.netの mysql ページ ( mysql_query ) を見ると、PDO ( pdo-mysql )のような抽象化レイヤーを使用することをお勧めします。

PDO を使用すると、パラメーターを SQL クエリにバインドして、クエリでユーザー入力を使用することによるセキュリティへの影響を回避できます。

パラメータをクエリにバインドしないと、うまくいきません。

于 2012-09-30T20:34:06.753 に答える
0

フィールドのデータ型は string または varchar であるため、「」または「」で囲む必要があります。

以下のようにクエリを変更します

$query = "INSERT into data (book, title, content, author)VALUES ('".$string1."', '".$string2."',     
         '".$string3."', '".$string4."')";

送信の問題を解決するには、HTML コードを投稿してください

于 2012-09-30T17:24:21.083 に答える