2016-12-07 24 views
2

最近ウィンドウ(movamp)からlinux(ランプ)に切り替わりました。クエリに問題(構文エラー)があり、原因を特定できません。ここ は私が手クエリとエラーMSGです:MySQLクエリの問題:WHERE句

"SELECT * FROM products WHERE trash='false'" 

あなたのSQL構文でエラーが発生しています。正しい構文がMySQLサーバーバージョンに対応するマニュアルをチェックしてください。1SELECT * FROM products where traste = 'false'

私はいつもその構文で自分のクエリを書いています私は決して問題がなかった。

私はWindows(php 4.1.22 mysql 5.2.11)でコードを実行し、mysql_query()関数を使用していましたが、コードはうまくいきました。 私は(php 7.0.8 - mysql 5.7.16)を使用し、mysqli_query()関数を使ってクエリを実行します。

+0

「mysqli_escape_string」を使用するのは、 – Beginner

+0

に一重引用符を付けずに試してみましたか?単一引用符をエスケープしようとしているようですが、これが問題の原因です。 –

+1

http://stackoverflow.com/questions/9596652/how-to-escape-apostrophe-in-mysql –

答えて

1

あなたの構文エラーは、あなたが実際にこれを実行しているかのように、クエリには存在しないいくつかの偽のバックスラッシュを示しています。でも、完全なPHP文を持っていない

SELECT * FROM products WHERE trash=\'false\' 

我々は唯一の推測することができ、検査、およびする私あなたが実際に古くなったPHPバージョンからアップグレードしているので、magic quotesといういくつかの問題に直面している可能性があります。その "機能"はもはや存在しないので、サーバー内にバックスラッシュを自動的に挿入するものはありませんので、意図的にコードを実行するコードでなければなりません。

PHP/4は2004年にPHP/5に置き換えられました(これは12年と同じです)。PHP/7への道のりは大きく変わっています。新しいサーバー。

0

一重引用符を削除するか、一重引用符と二重引用符を逆にしてみてください。何も動作しない場合、偽の値を持つ変数を使用します。

0
"SELECT * FROM `products` WHERE `trash` ='false'" 

(あなたのケースでも動作するはずですが)あなたはphpMyAdminのか、好きでSQLクエリを実行しようとしている場合は、二重引用符を削除しようも

をこれを試してみてください。

0

私はあなたの答えとあなたのコメントに感謝します。あなたは私が問題の原因を突き止める手助けをしました。エスケープするために必要なデータだけではなく、クエリ文字列全体がエスケープされていました。

私は気が気になりません。これは明らかでした。

とにかく。あなたの文章に感謝します。