gpt4 book ai didi

php - MySQL PDO - $sth->fetch() 返回 FALSE,但只有第二次?

转载 作者:行者123 更新时间:2023-11-29 08:51:38 25 4
gpt4 key购买 nike

以下是我的应用程序的代码片段。请记住,我对 PDO 非常非常陌生(例如,今天开始弄清楚),所以我有点困惑。

现在,if 语句返回 1,正如它应该的那样。这是预料之中的。但是,在我设置 $node 后发生了意想不到的情况:设置后,它似乎是 FALSE。什么?就在几行之前,我的 fetch() 尝试返回了预期值,所以我不知道发生了什么。

$sth = $dbh->prepare("
SELECT *, COUNT(*) AS num_rows
FROM flow
INNER JOIN flow_strings
USING(node_id)
WHERE
(
parent = 0
OR parent = :user_flow
)
AND source = 0
AND string = :input
");
$sth->bindParam(':user_flow', $user->info->flow);
$sth->bindParam(':input', $input_sentence);
$sth->execute();

// If node exists.
if ($sth->fetch()->num_rows > 0)
{
// Get the information for the node.
$node = $sth->fetch();

[...] etc

我猜测光标已向前移动,然后没有任何内容可读取,因此返回 FALSE。不过,肯定有办法解决这个问题!当我运行 $sth->fetch()->num_rows 时,我并没有尝试更改任何内容 - 我只是尝试读取一个值。有解决方法吗?我是不是在做一些奇怪的事情?我真是迷失了,哈哈。

谢谢! :)

<小时/>

编辑:

注意: undefined variable :node_count ... 第 56 行

// Retrieve all child nodes under $parent.
$node_query = $dbh->prepare("
SELECT *, COUNT(*) AS num_rows
FROM flow
WHERE parent = :parent
");
$node_query->bindParam(':parent', $parent);
$node_query->execute();

// If child nodes exist.
if ($node_count = $node_query->fetch() && $node_count->num_rows > 0) // Line 56
{

[...] etc

最佳答案

将数据数组分配给某个变量并使用它而无需进一步获取:

if (($row = $sth->fetch()) && $row->num_rows > 0) {
// work with $row here
}

关于php - MySQL PDO - $sth->fetch() 返回 FALSE,但只有第二次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042789/

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