2012-01-05 17 views
0

このクエリで何が問題になっていますか?Mysqlクエリエラー

$query2=mysql_query("SELECT * FROM $t_medici WHERE `oras` LIKE $orase") or die(mysql_error()); 

このコードは、引用符で囲む必要があり$orase

Unknown column 'Bucuresti' in 'where clause' 
+0

あなたの質問は明確ではありません... – diEcho

+1

SQLインジェクションの脆弱性はこのクエリで間違っています。 –

+0

't_medici'テーブルはどのように見えますか? –

答えて

3

を返します。

$query2=mysql_query("SELECT * FROM $t_medici WHERE oras LIKE '$orase'") or die(mysql_error()); 
0

$oraseを一重引用符で囲みます。 必要に応じて%記号を使用してください。

0

orasフィールドが文字列の場合、$oraseがその周りに単一引用符を持っている必要があります。

この行に達すると、SQLコードがゆえの端にあるときに、変数 $oraseが文字列 Bucurestiが含まれていることである何が起こっ
$query2=mysql_query("SELECT * FROM $t_medici WHERE `oras` LIKE '$orase'") or die(mysql_error()); 

...WHERE `oras` LIKE Bucuresti 

しかし、あなたはまた、SQLのIを防ぐために(それをエスケープする必要があります。このようなnjection):サイドノートで

$query2=mysql_query("SELECT * FROM {$t_medici} WHERE `oras` LIKE '".mysql_real_escape_string($orase)."'") or die(mysql_error()); 

$query2=mysql_query("SELECT * FROM $t_medici WHERE `oras` LIKE '".mysql_real_escape_string($orase)."'") or die(mysql_error()); 

また、私はここに、二重引用符で囲まれた文字列、つまり{$ t_medici}内の他の変数の周りにカッコをつけたいですあなたがLIKEのような文字列を使用している場合は、返される行はすべてBucuresti(または$ oraseが保持するもの)とまったく同じか、前後に(空白も含めて)何もありません。この場合、LIKEをまったく使用する必要はありません。あなたがBucurestiを持っている(またはoraseが保持しているものは何でも$)任意の行を一致させたい場合は、「、(例えば「ブカレスト」、「ブカレスト」何とかorasフィールドに

"SELECT * FROM {$t_medici} WHERE `oras` ='".mysql_real_escape_string($orase)."'" 

しかし:あなたにもそうのような=を使用する場合がありますkdsbks kksd saBucurestie」、など)あなたはそうのような%を使用する必要があります。

"SELECT * FROM {$t_medici} WHERE `oras` LIKE '%".mysql_real_escape_string($orase)."%'" 

すなわちもし$oraseBucurestiを保持するならば、%Bucuresti%

0

インターネットからのクエリをコピーして編集するときに非常によく知られているエラーです。上に強調表示されているような単一引用符。