SQL请求无法检索数据

时间:2014-04-01 14:14:58

标签: php mysql sql

我正在尝试使用与其关联的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

5 个答案:

答案 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());