如何实现 MySQLi 嵌套的预准备语句


How to implement MySQLi nested prepared statements?

我正在尝试将MySQL转换为MySQLi。而且我不知道为什么它会刹车

$stmt2->execute();

并返回错误:

Call to a member function execute() on a non-object

任何问题或有效实施!?

// SQL condition "WHERE group=''" where `group` is empty (NULL)
$result = "SELECT id, name FROM table WHERE group='' ORDER BY array ASC";
if ($stmt = $mysqli->prepare($result)) {
    $stmt->execute();
    $stmt->bind_result($id, $name);
    while ($stmt->fetch()) {
        // SQL condition "WHERE group='$id'" where $id defined in $stmt->bind_result($id, $name);
        $result2 = "SELECT name FROM table WHERE group='$id' ORDER BY array ASC";
        $stmt2 = $mysqli->prepare($result2);
        //$valid_stmt2 = $stmt2 === FALSE ? false : true;
        echo $name . "'n";
        //if ($valid_stmt2) {
            // Error cased on $stmt2->execute();
            $stmt2->execute();
            $stmt2->bind_result($name2);
            while ($stmt2->fetch()) {
                echo 'related to: ' . $name2 . "'n";
            }
            $stmt2->close();
        //}
    }
    $stmt->free_result();
    $stmt->close();
}

这个问题可能与可以使用多个/嵌套的MySQLi语句有关?不幸的是,我发现它没有帮助,因为它没有提供有效的示例或问题资源。

更新:带有注释的简化代码示例。

你第一次做了

"SELECT id, url, name FROM links WHERE group='' ORDER BY array ASC"

然后你想用$id

"SELECT url, name FROM links WHERE group='$id' ORDER BY array ASC"

如何获得结果?如果组等于空字符串,那么它不会等于$id(仅当$id也是空字符串时,但这是无稽之谈。