1

問題を見つけて挿入クエリが機能するようになりましたが、理由がわかりません。これが私の現在の作業クエリです:

$add_movie = mysql_query("INSERT INTO ownedmovies VALUES ('', '{$movie_data['Title']}',
    '{$movie_data['Year']}', '{$movie_data['Rated']}', '{$movie_data['Runtime']}',
    '{$movie_data['Genre']}', '{$movie_data['Director']}', '{$movie_data['Writer']}',
    '{$movie_data['Actors']}', \"{$movie_data['Plot']}\", '{$movie_data['imdbRating']}')");

プロットフィールドを二重引用符で囲み、その他すべてを法線で囲んでいることに注意してください。他の人と同じようにプロットフィールドを実行した場合、エラーは発生しませんが、テーブルに何も挿入されませんでした...これで完全に機能します。

誰かがこれがなぜであるかについて私に教えてもらえますか?

ありがとうございました

4

4 に答える 4

5

プロット文字列に一重引用符が含まれていると思われます。この問題を回避するには、を使用して文字列値をエスケープするmysql_real_escape_stringか、(より適切に)パラメータ化されたクエリを使用する必要があります。

この場合、一重引用符を二重引用符に変更する「解決策」は機能しているように見えるかもしれませんが、プロット文字列に二重引用符が含まれていると失敗します。

于 2012-07-06T21:29:23.877 に答える
1

PHPでは、二重引用符はその側の変数を解析し、その中の単一引用符は文字列内の単一引用符になります。

varcharパラメータをmysqlに渡すには、引用符で囲む必要があるため、一重引用符はvarcharパラメータとしてmysqlに渡されます。

PHP変数は二重引用符で囲まれて解析されており、SQL文字列には変数に渡した値が含まれています。

于 2012-07-06T21:30:43.433 に答える
1

MySQLクエリで二重引用符を使用する場合は注意してください。MySQLが実行されているSQLモードによって意味が異なります。

select "fred" from table

ANSI_QUOTEモードの場合、列fredから値を返します。それ以外の場合は、リテラル値fredを返します。

于 2012-07-06T21:39:48.553 に答える
0

プログラムがクエリの終了場所を混乱させないように、二重引用符と一重引用符を一緒に使用します。

たとえばクエリ

 ("Select 'name' From 'contacts'")

すべて二重引用符を使用した場合、次のようになります

 ("Select "name" From "contacts"")

そして、プログラムは実際のクエリが「選択」であると思わせることができます

そうだと思います。

于 2012-07-06T21:27:13.977 に答える