我正在尝试使用与其关联的email
从我的数据库中检索id
字段:
$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = '".$userID."' ") or die(mysql_error());
此查询始终返回NULL
,我无法理解原因。
使用var_dump
进行了测试$userID
确实是正确的。
但是当我使用硬编码值代替$userID
时,它可以正常工作:
$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = '85' ") or die(mysql_error());
为什么$userID
变量不会传递给我的查询?有没有办法正确传递这个?
编辑:
根据请求声明$ userID。这个变量的var_dump在query2之前就行了。
// Fetch ID for matching details
$query = mysql_query("SELECT id FROM `users` WHERE `email` = '".$emailInput."' && `username` = '".$usernameInput."' ") or die(mysql_error());
// Successful query - ID stored
if(mysql_num_rows($query) > 0){
$userID = mysql_fetch_array($query);}
var_dump($userID);
两个var_dumps在页面上输出以下内容:
array(2) { [0]=> string(2) "85" ["id"]=> string(2) "85" } NULL
答案 0 :(得分:3)
我说,$userID
是一个数组是你的问题...在查询中改为$userID['id']
。
$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = '" . $userID['id'] . "' ") or die(mysql_error());
答案 1 :(得分:0)
尝试删除双引号或单引号。因为id通常是数据类型int,你使用两次使它成为字符串值..
PHP也非常聪明地识别变量和数据类型,因此您可以使用"$userID"
或"{$userID}"
而无需连接。
答案 2 :(得分:0)
它可能是一个串联问题,如果$ userid是字符串,它应该没问题,但如果它是一个整数或双..它将被处理为一个字符串
如果是整数,请尝试:
$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = ".$userID) or die(mysql_error());
或
$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = ".$userID['0']) or die(mysql_error());
答案 3 :(得分:0)
所以,问题是你的$userID
不是 85 或一个简单的数字,但它是一个数组,你仍然试图在查询中连接它。
问题出在代码中的其他位置,可能是您设置$userID
以下是解决方案:
$sql = mysql_query("SELECT email FROM `users` WHERE `id` = " . $userID['id']) or die(mysql_error());
答案 4 :(得分:0)
试试这个......
$query2 = mysql_query("SELECT email FROM `users` WHERE `id` = $userID ") or die(mysql_error());