簡體   English   中英

SQL 查詢返回 0 行,而 2 在數據庫中

[英]SQL query returns 0 rows while 2 in DB

我的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']包含一個值並且確實如此。 此外,此代碼返回一個空對象,因為獲取沒有結果。

$stmtw->rowCount()返回 0

當我刪除WHERE條件和參數時,查詢有效。 有誰知道為什么在 DB 中有 2 行時它會返回 0 行?

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>

嘗試

SELECT * FROM wav_files WHERE GUID = :guid AND (Name = '' OR Name is NULL) ";

或者

SELECT * FROM wav_files WHERE GUID = :guid AND ifnull(Name,'') = '' ";

=null 不能以您正在使用的方式工作。

在這里,您可以將 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'
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM