Прямо сейчас я использую Mysqli чтобы извлечь данные из базы данных Mysql, код, который я использую, сложен для понимания, и, насколько я понимаю, он устарел или полностью устарел.
Если бы я мог получить некоторое представление и, возможно, некоторые обновленные методы в моем Qoal извлечения данных из базы данных 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);
}
Вы должны очистить вызов в базе данных в первую очередь. $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
и когда он зацикливается на следующей строке результата, он также сохраняет следующее значение в этом массиве.
Вы можете манипулировать результатом до или после сохранения его в новый массив, как считаете нужным.
Надеюсь это поможет.
Других решений пока нет …