Вот моя маленькая функция. Он не обрабатывает результаты правильно. Я получаю все нужные мне строки, но все строки массива $ results содержат одинаковые значения.
Итак, я делаю 2 массива, временный массив для хранения значений после каждой выборки и другой массив для хранения всех временных массивов.
Сначала я беру временный массив и сопоставляю его ключи с именами столбцов. Затем я передаю его bind_result, вызываю fetch () и использую его так же, как любое другое значение результата.
Может ли это быть из-за того, что я повторно использую массив $ results?
numresults - это число значений, которые вы берете из каждой строки. если 0, вы не получите никаких результатов обратно.
function db_query($db, $query, $params = NULL, $numresults = 0)
{
if($stmt = $db -> prepare($query))
{
if($params != NULL)
{
call_user_func_array(array($stmt, 'bind_param'), $params);
}
if(!$stmt -> execute())
{
//echo 'exec error:',$db->error;
return false;
}
if($numresults > 0)
{
$results = array();
$tmpresult = array();
$meta = $stmt->result_metadata();
while ($columnName = $meta->fetch_field())
$tmpresult[] = &$results[$columnName->name];
call_user_func_array(array($stmt, 'bind_result'), $tmpresult);
$meta->close();
$results = array();
while($stmt -> fetch())
$results[] = $tmpresult;
}
$stmt -> close();
}
else
{
//echo 'prepare error: ',$db->error;
return false;
}
if($numresults == 0)
return true;
return $results;
}