Я делаю простой запрос mysqli с кодом, который я уже много раз использовал, но со мной никогда не возникало этой проблемы. Я собираю всю таблицу с неизвестным количеством столбцов (это часто меняется, поэтому я не знаю ни точное значение, ни имена столбцов). У меня есть код, который использует метаданные, чтобы захватить все и вставить его в массив.
Это все работает нормально, но вывод испорчен:
$stmt -> execute(); //the query is legit, no problems there
$meta = $stmt->result_metadata();
while ($field = $meta->fetch_field())
{
$params[] = &$row[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $params);
while ($stmt->fetch())
{
$pvalues[++$i] = $row; //$pvalues is an array of arrays. row is an array
//print_r($row);
print_r($pvalues[$i-1]);
}
$stmt -> close();
Я бы предположил, что $ pvalues имеет результаты, которые я ищу. Моя таблица в настоящее время имеет 2 строки. $ pvalues имеет длину массива 2. Обе строки в $ pvalues абсолютно одинаковы. Если я использую:
print_r($row)
выводит правильные значения для обеих строк, но если позже я проверю, что находится в $ pvalues, это неверно (1 строка присваивается обоим индексам $ pvalues).
Если я использую
print_r($pvalues[$i-1])
он печатает точно так, как я ожидал, одну и ту же строку в таблице дважды.
Почему данные не присваиваются $ pvalues? Я знаю, что $ row содержит правильную информацию в одном месте, но она перезаписывается или теряется.