Многократное использование многих подготовленных Mysqli утверждений или меньшее количество прямых запросов - PullRequest
1 голос
/ 14 мая 2019

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

Вопрос в том, что будет лучше / быстрее использовать: Несколько подготовленных операторов, которые будут выполняться по одному с другим полем:

$stmt=$con->prepare("SELECT amount from achievement_list where field=?");
$stmt->bind_param("s",$query_field);
foreach($fields as $field){
   $query_field=$field;
   $stmt->execute();
   //some actions
}

или все эти поля с одним прямым запросом:

$con->query("SELECT amount from achievement_list where field in($field_list)");
//some actions

Оба способа могут быть использованы несколько раз. Таким образом, выбор между многими подготовленными утверждениями или менее прямым запросом

1 Ответ

0 голосов
/ 14 мая 2019

Нет такого вопроса.

Подготовленные запросы ничем не отличаются от прямых.Число в обоих случаях равно точно так же.

Так что вы просто используете подготовленные запросы 100% времени , если в запросе используется хотя бы одна переменная,Период.Здесь нечего обсуждать.

И да, выполнение одного запроса быстрее, чем выполнение нескольких .

Ваш конкретный вопрос подходит и здесь.Просто запустите один подготовленный запрос вот так

$in = str_repeat('?,', count($fields) - 1) . '?';
$sql = "SELECT field, amount from achievement_list where field in($in)"
$stmt = $db->prepare($sql);
$types = str_repeat('s', count($fields));
$stmt->bind_param($types, ...$fields);
$stmt->execute();
$data = $statement->get_result()->fetch_all(MYSQLI_ASSOC);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...