2012-03-14 124 views
0

我无法获得一个变量在SQL语句中工作。当我用数据库和特定行(11)中的另一列(ID = 11)替换(username = $ user)时,我可以得到它的工作,但我希望包含与列'username相匹配的$ user的特定行',以及其他带有$ 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语法错误;检查对应于您的MySQL服务器版本的手册,以在'@ googlemail.com'附近使用正确的语法DESC,RAND()LIMIT 9)作为A ORDER BY RAND()'在第4行

任何帮助赞赏。

回答

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的整数。不太清楚PDO和绑定参数是什么,但会查找它们。谢谢你的帮助。 – user1022772 2012-03-14 23:38:30