以下は私のアプリケーションのコードスニペットです。私は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