6

私は PHP スクリプトを持っていますが、何らかの理由で mysql が選択/挿入する値を列として扱い続けています。これが私のSQLクエリの例です:

$query = mysql_query("SELECT * FROM tutorial.users WHERE (uname=`".mysql_real_escape_string($username)."`)") or die(mysql_error());

それは次のようになります。

SELECT * FROM tutorial.users WHERE (uname=`test`)

エラーは次のとおりです。

'where 句' の列 'test' が不明です

私も試しました:

SELECT * FROM tutorial.users WHERE uname=`test`
4

5 に答える 5

37

MySqlでは、バッククォートは識別子が列名であることを示します。(他のRDBMSは、これに角かっこまたは二重引用符を使用します)。

したがって、クエリは「「uname」という名前の列の値が「test」という名前の列の値と等しいすべての行を指定してください」でした。ただし、テーブルにtestという名前の列がないため、表示されたエラーが発生します。

バッククォートを一重引用符に置き換えます。

于 2009-09-26T03:43:57.620 に答える
9

変?どうして?何が間違っているかを正確に言います。テーブルに「テスト」列がありません。あなたは正しいテーブルを持っていますか?「チュートリアル.ユーザー」? テーブルの名前が変わっていませんか? 多分あなたはするつもりだった

SELECT * from users WHERE uname = 'test';

データベースではなく、テーブル名のみを参照する必要があります..データベースに名前が付けられていると仮定しますtutorial

于 2009-09-26T03:13:38.107 に答える
4

例:

$uname = $_POST['username'];
$sql="SELECT * FROM Administrators WHERE Username LIKE '$uname'"

$uname を一重引用符で囲んでいることに注意してください。クエリをエコーすると、これは出力です-

SELECT * FROM Administrators WHERE Username LIKE 'thierry'

ただし、クエリで $uname 変数を囲む引用符を見逃すと、次のようになります。

SELECT * FROM Administrators WHERE Username LIKE thierry

MySQL サーバーでは、2 つのクエリが異なります。thierry は入力文字列であり、引用符で正しくカプセル化されていますが、2 番目のクエリのようにそうではなく、MySQL でエラーが発生します。

私はこれが役に立ち、私の英語があまり良くないことを許してくれることを願っています

于 2012-06-10T15:52:01.430 に答える
0

私は同じ問題を抱えていましたが、タイプミスであることが判明しました。私のエラーメッセージは次のとおりです。

Unknown column 'departure' in 'where clause'

テーブルでその列を確認したところ、テーブルで「出発」ではなく「出発」と綴られていたため、エラーメッセージがスローされたことがわかりました。

その後、クエリを次のように変更しました。

Unknown column 'depature' in 'where clause' 

そしてそれはうまくいきました!

したがって、私のアドバイスは明確です。列名のスペルが正しいことを再確認してください。

これが役に立ったことを願っています。

于 2013-10-16T10:41:43.133 に答える