PHP: Mysqli 预处理语句 "select *"

PHP: Mysqli prepared statement with "select *"

这就是我目前从数据库中获取数据的方式:

if ($stmt = $mysqli->prepare ( "SELECT fname,lname from $table_name 
where cno >=? LIMIT 50" ))
    {
        $stmt->bind_param ( "i", $cno); 
        $stmt->execute ();
        $stmt->bind_result ($fname,$lname); 
        $arrayUsers = array();

        while ($stmt->fetch())
        {
            if (isset ($fname))
            {
                $arrayUsers[] = array(
                        "fname" => $fname,
                        "lname" => $lname);

}
}
$stmt->close ();
        }
        $mysqli->close ();

而且效果很好。 但是,如果我将 select 更改为 SELECT * from... 我的绑定将失败。 这是否意味着如果我有大量字段,我仍然必须指定每个字段,或者有没有办法使用 select *?

----更新了---

if (empty($arrayUsers))
    {
        return 0;
    }
    else
    {
        return $array;
    }

SELECT * 从来都不是一个好主意。

最好说清楚。

如果您只有 2 列,它就可以工作。

这就是 bind_result 数字变量需要匹配列的工作方式。

除此之外还需要顺序相同

编辑: pdo 中的示例:

if ($stmt = $pdo->prepare ("SELECT * from `$table_name` where cno >=:cno LIMIT 50" )){
    $stmt->execute([':cno'=>$cno]);
    $arrayUsers = $stmt->fetchAll();
    $stmt->close();
}
$pdo->close();

如果您需要选择所有列:

SELECT * FROM `table`

您将使用 PHP 的 get_result() rather than bind_result()

当您指定要检索的每一列时,

bind_result() 更好,其中 get_result() 将允许您使用表格中更通用的 return 数据。