我try 使用datas数组自动构造在PHP中执行的查询. 但是对于绑定结果,我不知道该怎么做...

我有一个简单的SQL查询:

$sql = 'SELECT id, username, email FROM users';
$stmt = $mysqli->prepare($sql);
$stmt->execute();
$stmt->bind_result($id, $username, $email ;

我添加了这个数组:

$configTable = array(
    array(
        'th' => '#',
        'data' => 'id'
    ),
    array(
        'th' => 'Username',
        'data' => 'username'
    ),
    array(
        'th' => 'Email',
        'data' => 'email'
    )
);

我试着使用这些数据.对于SQL,没有问题:

$fields = implode(', ', $configSql['fields']);
$sql = 'SELECT '.$fields.' FROM '.$configSql['table'];

但是对于绑定结果,我不知道该怎么做...

推荐答案

正如the manual page for bind_result个笔记所示:

对于简单的结果,此函数非常有用.要检索可迭代的结果集,或者以数组或对象的形式获取每一行,请使用mysqli_stmt_get_Result().

在处理动态数据时,使用单个变量几乎从来都不是最有效的解决方案;相反,您需要一个具有适当字段的数组或对象.

可能最有用的方法是为每一行获取一个关联数组,其中键是列名:

$result = $stmt->get_result();
$formattedResult = $result->fetch_all(MYSQLI_ASSOC);

现在您有了一个普通的PHP数组,您可以将其格式化为一个HTML表或任何您需要的格式,例如

echo "<table>\n";
echo "<tr>\n";
foreach ( $configTable as $field ) {
   echo "<th>", htmlspecialchars($field['th']), "</th>";
}
echo "</tr>\n";
foreach ( $result as $row ) {
    echo "<tr>"\n;
    foreach ( $configTable as $field ) {
       $value = $row[ $field['data'] ];
       echo "<th>", htmlspecialchars($value), "</th>";
    }
    echo "</tr>\n";
}
echo "</table>\n";

Php相关问答推荐

如何使用查询范围在Statamic中按组过滤用户?

在Laravel中,如果我用session—put()存储一些信息,客户端浏览器是否可以使用这些信息?>

在WooCommerce产品中按类型对产品属性术语进行分类以供显示

WooCommerce数量减号和加号图标未显示

由于某种原因,FILE_GET_CONTENTS从一天到另一天停止工作,并在PHP 7.2.34中返回一条&http/1.1 406不能接受&的错误

从AJAX响应中获取一个未定义的html

如何不重新查询模型A-&>;相关模型B-&>模型

Codeigniter 3中SMTP.office 365.com的截断问题

莫德克斯.当我try 使用pThumb为手机压缩图像时,没有任何react

如何从Laravel中的Spatie\Dns\Records\A对象中提取IP地址

限制某些产品只能在WooCommerce的特定邮政编码/邮政编码范围内发货

Laravel Carbon DiffForHumans选项(年,月,天)

如何限制 woocommerce 中相关产品的标题长度

PHP 简单 XML Xpath 上移树(带有名称的父级)

Laravel 8:会话不适用

PHP for each 函数打印 td

Docker: unixodbc.h 没有这样的文件或目录.已安装 unixodbc-dev 时出现pecl install sqlsrv错误

WooCommerce 按 ID 限制产品

如果 static:: 被解析为B,为什么 PHP 会执行A的方法

根据数组中的文本文件编号显示星级