SQL 查询返回 0 行,而 DB 中返回 2

Posted

技术标签:

【中文标题】SQL 查询返回 0 行,而 DB 中返回 2【英文标题】:SQL query returns 0 rows while 2 in DB 【发布时间】:2019-12-13 10:24:00 【问题描述】:

我的 SQl 查询返回 0 行,但是当我在 phpmyadmin 中运行相同的查询时,它返回 2 行。 我的代码如下所示:

    <?php 
        require("mysql_config.php");    

        // *******************************************************************

        if(isset($_POST['GUID']))
            $queryw = "SELECT * FROM wav_files WHERE GUID = :guid AND (Name = '' OR Name IS NULL) ";
            $query_params = array(':guid' => $_POST['GUID']);
            try 
                $stmtw = $db->prepare($queryw); 
                $result = $stmtw->execute($query_params); 
             
            catch(PDOException $ex) die("Failed to run query 01: " . $ex->getMessage());  
            $files = array();
            while($row = $stmtw->fetch()) 
                $file = array();
                $file['id'] = $row['ID'];
                $file['name'] = $row['Name'];
                $file['filename'] = $row['Filename'];
                array_push($files, $file);
            
            echo json_encode($files);
        

    ?>

我检查了$_POST['GUID'] 包含一个值,它确实存在。 此代码还返回一个空对象,因为 fetch 没有结果。

$stmtw-&gt;rowCount() 返回 0

当我删除WHERE 条件和参数时,查询会起作用。 有谁知道为什么它返回 0 行而 DB 中有 2 行?

var_dump($query_params) 返回:

<pre class='xdebug-var-dump' dir='ltr'>
<small>C:\localhost\www\get_wavfiles.php:22:</small>
<b>array</b> <i>(size=1)</i>
  ':guid' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'53905-3534-5345'</font> <i>(length=17)</i>
</pre>

【问题讨论】:

评论不用于扩展讨论;这个对话是moved to chat。 我有一个非常方便的教程,How to debug database interactions with PDO,它肯定会帮助你找到问题。它已经帮助很多人找到了输入数据和数据库之间的不一致 【参考方案1】:

在这里,您可以将 UNION ALL 与 EXISTS 一起使用:

SELECT * 
FROM customer
WHERE A='B'
UNION ALL
SELECT * 
FROM customer
WHERE A='C' AND NOT EXISTS (
    SELECT 1
    FROM customer
    WHERE A='B'
)

【讨论】:

以上是关于SQL 查询返回 0 行,而 DB 中返回 2的主要内容,如果未能解决你的问题,请参考以下文章

Mongo查询语句

SQL查询时错误:子查询返回的值多于一个

php查询sql表中数据,存在则返回显示1,不存在显示0

SQL语句怎样返回查询结果

如何分配自定义 SQL 查询,该查询返回行集合作为 ORM 模型的属性

mongodb 查询数据