[英]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'>=></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.