2013-10-25 28 views
0

在用户会话中有一个电子邮件地址,我试图使用提取的信息从数据库访问用户的其他相关信息。这是我的。mysql查询与数组作为WHERE参数

$author = explode(":", $_SESSION['user_id']); 

$query = mysql_query("SELECT * FROM users WHERE `active`='1' AND `email`=$author[1]"); 

while ($query_row = mysql_fetch_assoc($query)) { 

// does stuff in here. 

} 

由于某种原因,我回到“mysql_fetch_assoc()期望参数1是资源,布尔给定。” 如果我回显“$ author ['1']”,我会为登录的用户获取正确的电子邮件地址。如何正确写入查询 ?

+0

需要在'$ author ['1']'' –

回答

1

你应该把:

“SELECT * FROM用户WHERE active = '1' AND email = '” $作者[1]。 “'

确保你有propper报价在那里

+0

中引用这个单引号。谢谢,解决了它。 – Guage

0
$qry ="SELECT * FROM users WHERE `active`='1' AND `email`= ".$author['1']; 
$query = mysql_query($qry); 
+0

解释你在做什么不同,为什么会有所帮助。 – showdev

0
$query = mysql_query("SELECT * FROM users WHERE `active`='1' AND `email`='".$author[1]."'"); 
+1

解释你在做什么不同,为什么会有所帮助。 – showdev

0

您可以在报价时,大括号括起来的变量:

$query = mysql_query("SELECT * FROM users WHERE `active`='1' AND `email`={$author[1]}"); 

虽然我有一个技巧: 运行的查询是这样的: $查询=请求mysql_query( '...')或死亡(mysql_error()) ;有了这个,你至少会知道它为什么会失败。

P.S.我想你有一个使用mysql扩展的理由,但无论如何,你应该使用PDO或MySQL上的mysqli。您使用PDO获取带有mysqli或命名参数的占位符。更好的合作。