【问题标题】:PHP PDO SQL query not finding IS NOT NULL rowsPHP PDO SQL 查询未找到 IS NOT NULL 行
【发布时间】:2022-01-10 03:27:10
【问题描述】:
table
-----
id column1
1  some random text
2  more random text
3  
4  blah blah
5
6
7
8
9

$sqlData7 = $this->con->prepare("SELECT id, column1 FROM table WHERE column1 IS NOT NULL");
$rowTotal7 = $sqlData7->rowCount();
$attIdArr7 = $sqlData7->fetchAll(PDO::FETCH_COLUMN, 0);

print_r($attIdArr7);

这应该返回:

Array ( [0] => 1 [1] => 2 [2] => 4 )

但正在返回

Array ( )

我做错了什么,它没有拾取非空列?

我认为我不需要可以查询的额外布尔列“is_column1_Null”,但在尝试让它工作半天后,我即将添加它。

非常感谢

【问题讨论】:

  • 这是一个可疑的问题,因为下面的演示清楚地表明当前查询实际上有效
  • 为什么要返回那个?据我所知,您没有执行查询

标签: php mysql pdo null


【解决方案1】:

您需要致电$sqlData7->execute()

<?php
$sqlData7 = $pdo->prepare("SELECT id, column1 FROM `table` WHERE column1 IS NOT NULL");
$sqlData7->execute();
$rowTotal7 = $sqlData7->rowCount();
$attIdArr7 = $sqlData7->fetchAll(PDO::FETCH_COLUMN, 1);

var_dump($attIdArr7);

PHP PDO Online test

【讨论】:

  • 它执行了 SQL 我只是忘记将它添加到示例代码中。问题出在实际的 PDO SQL 查询上,这就是它返回空数组的原因。 Suryapal Rao 提供了有效的解决方案。
【解决方案2】:

您可以编写以下查询以获得预期结果

SELECT id, column1 FROM table column1 IS NOT NULL AND TRIM(column1) <> '';

上述数据库设计建议该列为空且不设置为空,但也可以为空。所以我检查两个条件,检查列是否不为空,并检查它是否不为空。我认为它是在没有任何验证的情况下插入数据,所以它也是插入空值。

【讨论】:

  • 非常感谢。这样就解决了。
  • 请在您的答案中添加一些解释,以便其他人可以从中学习。你改变了什么,为什么?
  • 对不起,感谢您提醒我说明更正数据的情况。 @NicoHaase
  • 它没有回答为什么 SQL 查询没有找到非空行的问题。你误解了这个问题,你的答案是错误的。
猜你喜欢
  • 1970-01-01
  • 2012-09-09
  • 2021-05-12
  • 2018-11-25
  • 1970-01-01
  • 2015-04-25
  • 2017-05-09
  • 1970-01-01
  • 2011-10-21
相关资源
最近更新 更多