2012-03-14 6 views
0

SQL文で動作する変数を取得できません。私は(ID = 11)データベースと特定の行(11)から別の列で(username = $ user)を置き換えることが動作するようになることができますが、特定の行を$ userと一致するカラムを 'username 'と、$ snの制限付きの他のランダムな結果と一緒になります。PHP変数をSQL文に追加します。動作していません

var_dump($ user)を使用すると、変数に値があることがわかりますが、なぜSQL文では機能しないのかわかりません。

$photo=mysql_query("SELECT A. * FROM (
SELECT DISTINCT * FROM profile_images 
WHERE approved='N' 
ORDER BY (username = $user) DESC, RAND()  
LIMIT $sn) 
as A ORDER BY RAND()"); 

エラーメッセージが表示されます。SQL構文にエラーがあります。 '@ googlemail.com)の近くで使用する正しい構文についてはMySQLサーバーのバージョンに対応するマニュアルを確認してください。ライン4のORDER BY RAND()'としてDESC、RAND()LIMIT 9)

答えて

4

$snと仮定すると、整数値を保持し、エスケープする必要はありませんが、一般的には

$photo=mysql_query("SELECT A. * FROM ( 
SELECT DISTINCT * FROM profile_images 
WHERE approved='N' 
ORDER BY (username = '".mysql_real_escape_string($user)."') DESC, RAND()  
LIMIT $sn) 
as A ORDER BY RAND()"); 

は、PDOおよびバインドパラメータを使用することを検討してください。

+0

$ snをintvalをint型にキャストしました。 PDOとバインドパラメータが何であるかはっきりしていませんが、それらを検索します。ご協力いただきありがとうございます。 – user1022772