0

以下是我的应用程序的代码片段。请记住,我对 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,我不想改变任何东西——我只是想读取一个值。有解决方法吗?我在做一些奇怪的事情吗?我迷路了,哈哈。

谢谢!:)


编辑:

Notice: Undefined variable: node_count ... on line 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
4

1 回答 1

2

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

if (($row = $sth->fetch()) && $row->num_rows > 0) {
    // work with $row here
}
于 2012-06-14T23:36:54.110 回答