PHP - bind_result 到数组

标签 php mysql prepared-statement

我正在为返回多个结果的查询使用准备好的语句,我希望将这些结果放在一个数组中。但是 bind_result 不适用于数组,所以我是这样做的:

$read_items = $db->stmt_init();
$read_items->prepare("SELECT item_id, item_name FROM items");
$read_items->execute();
$read_items->bind_result($var1, $var2);
while ($read_items->fetch()) {
  $item_id[] = $var1; 
  $item_name[] = $var2;
}

是否有更清晰/更好/更优雅的方式将结果放入 $item_id 和 $item_name 数组?

从上面可以看出,我将 $var1 和 $var2 用作“中间体”——并且一直觉得一定有更好的方法。

谢谢。

最佳答案

我不能以此为荣,但是 PHP manual有一个很好的解决方案(逐字粘贴):

<?php

// blah blah...
call_user_func_array(array($mysqli_stmt_object, "bind_result"), $byref_array_for_fields);

// returns a copy of a value
$copy = create_function('$a', 'return $a;');

$results = array();
while ($mysqli_stmt_object->fetch()) {
    // array_map will preserve keys when done here and this way
    $results[] = array_map($copy, $byref_array_for_fields);
}

关于PHP - bind_result 到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576260/

相关文章:

php - 选择特定日期之前或之后未使用过的 MySQL 记录

PHP/MySQL 安全登录和 session

php - 在 MySQL/PHP 查询中有效显示 strtotime()

python - 使用 Python Flask 向现有用户注册时 Web 应用程序显示数据库错误

java - 当我说 Prepared 语句是预编译的是什么意思?

mysql - 是否可以使用预准备语句在 MySQL 中创建表?

php - 准备好的语句返回 false 但查询成功

php - 从 php exec() 运行 libreoffice

php - KnpMenuBundle 和动态路由参数

php - 将数据从一个数据库插入到mysql中的另一个数据库