-3

関心のある 3 つの列があります。RateNameそしてURLvarchars でMaxNumあり、INT です。次のコマンドを実行しようとすると、失敗します。

SELECT * FROM `table1` WHERE `RateName` LIKE '%$customerType%'" AND `URL` IS NOT NULL AND `MaxNum` = 2

エラーは次のとおりです。#1064 - 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 '" AND URL IS NOT NULL AND MaxNumOfTiers = 2' at line 1

クエリを分離しようとしましたが、次のコードは正常に機能します。

SELECT * FROM `table1` WHERE `RateName` LIKE '%$customerType%'"

ただし、条件を追加するANDと、エラーが発生します。

4

4 に答える 4

3

不要な二重引用符を削除しますか?

SELECT * FROM `table1` WHERE `RateName` LIKE '%$customerType%' -- was here
         AND `URL` IS NOT NULL AND `MaxNum` = 2

余分な条件がないものは、それを削除するか、MySQL が黙って無視しない限り、失敗するはずです。

于 2013-05-08T09:56:07.977 に答える
1

' と " を 1 か所で使用しているため、クエリに構文エラーがあります。それを使用して以下に変更しました。

SELECT * FROM `table1` WHERE `RateName` LIKE '%$customerType%' AND `URL` IS NOT NULL AND `MaxNum` = 2
于 2013-05-08T09:57:05.093 に答える
1

クエリに余分な"ものがあります-削除すると機能するはずです。

"一般に、 SQL で二重引用符を使用することは避けてください。ほとんどの SQL ダイアレクトは、一重引用符の使用のみをサポートしています。PostgreSQL などの一部の方言では、二重引用符を使用して名前をエスケープします (文字列を表すものではありません)。

SQL本体で二重引用符を避けることには、PHP、Perl、Pythonなどのプログラミング言語でSQL全体をエスケープするために使用できるという優れた特性もあります.

于 2013-05-08T09:56:26.720 に答える
1

LIKE '%$customerType%'" AND の代わりに LIKE '%$customerType%' AND を試してみてください。問題なく動作します。

于 2013-05-08T09:59:42.933 に答える