这就是我目前从数据库中获取的方式:
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 * from
...我的绑定失败。
这是否意味着如果我有大量字段,我仍然需要指定每个字段或是否有办法使用select *
?
----更新---
if (empty($arrayUsers))
{
return 0;
}
else
{
return $array;
}
答案 0 :(得分:3)
如果您需要选择所有列:
SELECT * FROM `table`
您将使用PHP get_result()
而不是bind_result()
。
bind_result()
会更好,get_result()
将允许您使用表格中更通用的数据返回。
答案 1 :(得分:2)
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();