Я видел пару вопросов за последние несколько дней, которые использовали mysqli
, но где ответы, похоже, не распознали разницу между $stmt->execute()
и $db->query()
.Смешивание функций доступа к данным MySQL mysqli?
Как я понимаю, существуют две разные модели для доступа к результатам в mysqli
.
Это один использует необработанный SQL и требует от программиста, чтобы избежать ввода для предотвращения атак с внедрением SQL, но позволяет программисту получить ассоциативный массив (или простой массив), содержащий column => value
отображения:
$result_set = $db->query("SAFE SQL QUERY HERE");
while ($row = $result_set->fetch_assoc()) {
# do something with $row['fieldname'];
}
В качестве альтернативы , вы можете сделать это, что позволяет хорошо связывание параметров и результатов, но не может (AFAIK) дать вам какой-либо простой результат массива:
$stmt = $db-prepare("SQL QUERY WITH ? PLACEHOLDERS");
$stmt->bind_param("s", $input_variable);
$stmt->execute();
$stmt->bind_results($output_col1, $output_col2);
while ($stmt->fetch()) {
# do something with $output_col1 and $output_col2
}
Мой вопрос - есть ли способ, с mysqli
, чтобы получить простой выход массива, показанный в первом шаблоне, но при этом все еще использует безопасно связанные входные параметры согласно второму шаблону?
Я не могу найти все равно для этого (кроме использования PDO
вместо этого!).
Олафур - Я откатить ваши изменения правописания. «признанный» - это стандартное английское правописание. – Alnitak