gpt4 book ai didi

php - SQL SELECT 返回数组但 PHP 认为它为空

转载 作者:行者123 更新时间:2023-11-29 07:29:59 26 4
gpt4 key购买 nike

我正在通过 PHP 在 mySQL 中选择一些东西,该命令返回一些数组(这是正确的),但是当我将返回的 SELECT 放在 if 条件中并询问它是否返回 null 时,PHP 说它返回 null(这是不对的,因为它返回的是数组)

include '../db.php'; // my config

function select($command) {
global $db;
$sql = "".$command."";
$sqlDone = $db -> prepare($sql);
$sqlDone -> execute();
$data = $sqlDone -> fetchAll();
return $data;
}

$select = "SELECT likes.ID, likes.ID_user, likes.ID_post FROM likes WHERE likes.ID_user = '53' AND likes.ID_post = '2'"

if (select($select) == null) { // goes throw this
print_r(select($select)); // returns array
} else {
echo 'not null';
}

我尝试使用 !is_null 但它仍然不起作用。我试图将具有相同值的 select 命令直接放在 phpmyadmin 中,它返回数组,所以我很困惑。你能帮帮我吗?

Screenshot of phpmyadmin

最佳答案

PDO的fetchAll()返回一个数组,如果没有结果,则返回一个空数组(不是NULL)。

只需使用empty()

$return = select($select); //put this into a variable, because if you don't, you'll query the database twice and may get different results.
if (empty($return)) { // goes throw this
print_r($return); // returns array
} else {
echo 'not null';
}

旁注,您的函数实际上并没有做任何特别的事情。你可以用这个实现同样的事情:

$return = $db->prepare($select)->execute()->fetchAll();

如果您使用 PDO 包装器,它可能会更短。例如,使用我自己的包装器 GrumpyPDO , 你会用

$return = $db->all($select);

然后如果你有变量传递给查询,你会这样做

$select = "SELECT likes.ID, likes.ID_user, likes.ID_post FROM likes WHERE likes.ID_user = ? AND likes.ID_post = ?"
$return = $db->all($select, [$userid, $postid]);

关于php - SQL SELECT 返回数组但 PHP 认为它为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51844996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com