php - pdo select 语句不返回任何行

标签 php mysql select pdo

我正在使用 PHP 从 mySQL 中进行简单的选择。我做错了一些我似乎无法追查的事情。

这是我的陈述:

$storyTitle = $_GET['title'];
$storyDate = urldecode($_GET['date']);
$SQL = "SELECT
        *
    FROM
        tblContent
    WHERE
        REPLACE(contentTitle,' ' , '-') = :storyTitle
    AND
        date(publishDate) = date(:storyDate)";
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$q = $conn->prepare($SQL);
$q->execute(array(':storyTitle' => $storyTitle, ':storyDate' => $storyDate));
            while($r = $q->fetch()){
                 echo $SQL;
            };

这不会引发任何错误,也不会给出任何行。

如果我用硬编码的 SQL 语句替换标识符 :storyTitle 和 :storyDate,我会得到正确的结果。我逐步查看了变量,它们似乎是正确的......我已经浪费了很多时间寻找,但我缺乏专业知识来找出我做错了什么。

最佳答案

转储变量的内容。我怀疑:

$storyDate = urldecode($_GET['date']);

$_GET 参数自动进行 url 解码。

关于php - pdo select 语句不返回任何行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3842868/

相关文章:

mysql - MySQL 中的 CHECK 约束不起作用

MySQL 查询模式匹配

php - 根据值更新列,php mysql

php - 如果有连续的相似字符串,只打印一个字符串

php - 将字符串传递到 PHP 中的 Javascript 函数中 - 如何正确转义?

javascript - 在纯 JavaScript 中使用多个选择标签来过滤列表

php mysql选择不同的值

javascript - 通过xmlHttpRequest获取file.php的执行结果

python - 在Python的For循环中添加SQL查询

mysql - 年份更改未在 mysql 服务器中给出结果