mysql查询返回null时不应该

时间:2013-07-23 19:33:16

标签: php

我使用这个PHP代码从我的数据库中获取价值。

我的问题是我得到了null结果。

我检查!empty($ result)和mysql_num_rows($ result)但仍然得到null结果。

我测试完全我在我的phpmyadmin上的代码中使用的相同查询并且它正常工作。

来自$response["SQL"]的回音是“好”。

这是我的PHP代码:

$result = mysql_query("SELECT * FROM workouts_wall WHERE workout_name = 'WO13' AND user = 'tomer2'") or die (mysql_error());


// mysql inserting a new row
 if (!empty($result))
 {
    if (mysql_num_rows($result) > 0) 
    {
        $response["SQL"] = "good";
    }
    else
    {
        $response["SQL"] = "bad";
    }
}

else    
{
    $response["SQL"] = "bad";
}   


$response["is null?"] = $result;
    // echoing JSON response
    echo json_encode($response);

解决

我添加了这一行来修复它:

$row = mysql_fetch_array($result);

4 个答案:

答案 0 :(得分:1)

您不能只返回mysql_query结果。您必须获取数据。

$data = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
    $data[] = $row;

echo(json_encode($data));

//EDIT: Also a good idea when you are done...
mysql_free_result($result);

答案 1 :(得分:0)

mysql_query()函数返回资源或布尔值。如果您的查询成功(在这种情况下可能是这样),您仍然只是将MySQL资源分配给$response变量。您需要实际使用mysql_fetch_array()mysql_fetch_assoc()之类的内容来提取返回的数据。

关于不使用mysql_*()函数:Why shouldn't I use mysql_* functions in PHP?

答案 2 :(得分:0)

试试这个。希望它有效:

$result = mysql_query("SELECT * FROM workouts_wall WHERE workout_name = 'WO13' AND user = 'tomer2'") or die (mysql_error());


    // mysql inserting a new row
     if (!empty(mysql_fetch_array($result)))
     {
        if (mysql_num_rows(($result) > 0) 
        {
            $response["SQL"] = "good";
        }
        else
        {
              $response["SQL"] = "bad";
        }
    }

    else    
    {
        $response["SQL"] = "bad";
    }   


    $response["is null?"] = $result;
        // echoing JSON response
        echo json_encode($response);

答案 3 :(得分:0)

没有行的mysql结果是 NOT 为空。它是一个标准的mysql结果句柄,它实际上不包含任何行。它不是错误,它不是空字符串,它不是空数组......它是标准结果句柄,就像任何其他结果句柄一样。

您的代码应为

$result = mysql_query($sql) or die(mysql_error()); // catch the REAL errors
if (mysql_num_rows($result) == 0) { 
   ... result set is empty
}