mysql fetch数组一直返回false

Posted

技术标签:

【中文标题】mysql fetch数组一直返回false【英文标题】:mysql fetch array keep returning false 【发布时间】:2014-02-22 08:03:03 【问题描述】:
function get_subject_by_id($subject_id)
    global $connection; 
    $query = "SELECT * ";
    $query .= "FROM subjects ";
    $query .= "WHERE 'id' =$subject_id "; 
    $query .= "LIMIT 1 "; 
    $result_set = mysql_query($query, $connection); 
    confirm_query($result_set); 
    // if no rows are returned fetch_array will return false
    if(!is_null($result_set))
    echo "got here";
    echo $result_set; 
     
    if($subject=mysql_fetch_array($result_set)) // not working properly
        echo "testing fetch array";
        return $subject; 
    else 
        return NULL; 
    

尽管我的表中有 3 个项目,但 fetch 查询一直返回 false。一些代码显然是在测试我是否得到了结果,并且这些都可以工作,但是 fetch 数组没有执行 if 语句,因为它认为它是错误的。请帮忙几个小时的无奈属于这个问题

【问题讨论】:

【参考方案1】:

您的查询中有错误的引号类型,它们应该是反引号:

$query .= "WHERE `id` =$subject_id "; 
                 ^  ^

引号使id 成为字符串,而不是列名。由于字符串id 永远不会等于$subject_id,因此查询不会返回任何内容。

【讨论】:

感谢您的分享,为什么它不起作用这解决了我在客户端遇到的问题更有意义。谢谢。【参考方案2】:

我认为这是因为 id 列用单引号而不是反引号括起来

$query .= "WHERE 'id' =$subject_id "; 

应该是

$query .= "WHERE id =$subject_id "; 

或者

$query .= "WHERE `id` =$subject_id "; 

【讨论】:

以上是关于mysql fetch数组一直返回false的主要内容,如果未能解决你的问题,请参考以下文章

mysql怎么返回数组

使用 array_map 返回 MYSQL DB 结果

PHP mysqli_fetch_assoc 没有返回正确的值

当没有找到记录并且失败时,PHP PDO fetch 返回 FALSE

为啥我不能索引mysql返回的数组? [复制]

一维二维数组 与 常用的返回数组 以及 fetch_all与fetch_row的区别