Получение многомерного массива из базы данных MySQL

Прямо сейчас я использую Mysqli чтобы извлечь данные из базы данных Mysql, код, который я использую, сложен для понимания, и, насколько я понимаю, он устарел или полностью устарел.
Если бы я мог получить некоторое представление и, возможно, некоторые обновленные методы в моем Qoal извлечения данных из базы данных MySQL.

MySQL подготовил заявления

Что у меня так далеко, это:

$param = 1;
$mysqli = new mysqli("127.0.0.1", "user", "password", "databaseName");
$mysqli->query('SELECT reply_id FROM replies WHERE reply_topic = ? ORDER BY reply_date ASC');
$mysqli->bind_param('i',$param)
$mysqli->execute();
$row = bind_result_array($mysqli);

while($mysqli->fetch()){
$set[$row['']] = getCopy($row);
}
$mysqli->free_result();
return $set;function bind_result_array($stmt)
{
$meta = $stmt->result_metadata();
$result = array();
while ($field = $meta->fetch_field())
{
$result[$field->name] = NULL;
$params[] = &$result[$field->name];
}

call_user_func_array(array($stmt, 'bind_result'), $params);
return $result;
}

function getCopy($row)
{
return array_map(create_function('$a', 'return $a;'), $row);
}

3

Решение

Вы должны очистить вызов в базе данных в первую очередь. $mysqli->query отправил запрос перед привязкой параметров и так далее.

Заменить на следующее;

$stmt = $mysqli->prepare('SELECT reply_id FROM replies WHERE reply_topic = ? ORDER BY reply_date ASC');
$stmt->bind_param('i',$param)
$stmt->execute();

$mysqli->prepare возвращает новый объект, с которым вы должны связать значения и затем выполнить. Избегает SQL-инъекция!

Ничто из этого не амортизируется. mysqli_ это именно то, что вы должны использовать.

Поскольку все, что вам нужно, это массив результатов, вы можете использовать следующий код для этого — никаких пользовательских функций не требуется.

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
$set[] = $row['reply_id'];
}

Для каждого ряда в whileкаждое поле сохраняется в массиве с именем столбца в качестве ключа. Так $row['reply_id'] содержит значение reply_id столбец в базе данных. Выше я сохранил это значение в массиве $setи когда он зацикливается на следующей строке результата, он также сохраняет следующее значение в этом массиве.

Вы можете манипулировать результатом до или после сохранения его в новый массив, как считаете нужным.

Надеюсь это поможет.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector