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 数据。
这就是我目前从数据库中获取数据的方式:
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 数据。