如何在准备好的语句上的stmt-> fetch()期间创建数组?

时间:2017-04-04 06:57:32

标签: php mysql arrays web mysqli

我正在使用PHP开发一个新项目,我在PHP上很新,来自Qt,mysqli似乎非常复杂,我有一个准备好的查询,它在stmt->期间正确返回一些数组。 fetch()但是我无法检索那些数组,所以我可以在代码中将它们用作变量。

这是一段代码:

$stmt = $mysqli->prepare("SELECT nombre FROM platos where menuid=? OR menuid=? OR menuid=? OR menuid=?");
$stmt->bind_param('iiii', intval($opcion1id), intval($opcion2id), intval($opcion3id), intval($opcion4id));
$stmt->execute();

function stmt_bind_assoc (&$stmt, &$out) {
    $data = mysqli_stmt_result_metadata($stmt);
    $fields = array();
    $out = array();
    $fields[0] = $stmt;
    $count = 1;

    while($field = mysqli_fetch_field($data)) {
        $fields[$count] = &$out[$field->name];
        $count++;
    }                   
    call_user_func_array(mysqli_stmt_bind_result, $fields);
}

$stmt->store_result();
$resultrow = array();
stmt_bind_assoc($stmt, $resultrow);
$stmt->store_result();

while($stmt->fetch()){
   var_dump($resultrow);
}

$stmt->close();

数组$ resultrow的var_dump()是这样的:

array(1) {
  ["nombre"]=>
  &string(14) "Carne Estofada"
}
array(1) {
  ["nombre"]=>
  &string(15) "Merluza Plancha"
}
array(1) {
  ["nombre"]=>
  &string(12) "Pasta Tomate"
}
array(1) {
  ["nombre"]=>
  &string(15) "Verdura Hervida"
}

我无法在一段时间内设法访问这些字符串,我一直在寻找文档,但我似乎无法解决问题。

1 个答案:

答案 0 :(得分:0)

经过一些调试后,我发现必须如何完成调试,万一有人需要它。 在这部分:

$stmt->bind_result($nombrequesito);

我删除了$ resultrow数组和bind_assoc语句,然后添加了

$arrayfinal = array();
while($stmt->fetch())
{
    $arrayfinal[] = $nombrequesito;
}

最后在stmt-> fetch()期间,我创建了一个空白数组,并在所有变量$ nombrequesito中添加,因此只要有一行要获取,语句就会运行。循环结束如下:。

{{1}}

输出是一个包含所有变量的顺序数组。希望这会有所帮助。