@khodos_dmitry

Возможно ли выполнить несколько запросов к БД в одном mysqli_query?

$query = "Truncate `mydb`\n
INSERT INTO mydb SET name = 'Владимир'";
mysqli_query($link, $query);
У меня ошибку выдает. Я так понимаю, что нельзя.
  • Вопрос задан
  • 908 просмотров
Решения вопроса 1
shaks
@shaks
буквально на днях уже подымался этот вопрос.
php.net/manual/ru/mysqli.multi-query.php
разделяйте строки через ; и используйте не mysqli_query а mysqli_multi_query

PS. как вас только не тошнит пользоваться mysqli*
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
gobananas
@gobananas
finishhim.ru
Можно (гуглите: множественный insert mysql):
INSERT INTO `goods` (`good`,`price`) VALUES
('Ноутбук', 30000),
('Телефон', 5000),
('Смартфон', 10000),
('Планшет', 15000)


Но что бы это был 1 запрос надо все значения заранее вместе со скобками занести в переменную, сделать это правильно и не забыть запятую в конце удалить, потом просто переменную в запрос подставляете, например:
'INSERT INTO `goods` (`good`,`price`) VALUES '.$var.''
Ответ написан
Комментировать
supervaleha
@supervaleha
Web-development
Может так?

$query = "Truncate `mydb`; INSERT INTO mydb SET name = 'Владимир'";
mysqli_query($link, $query);
Ответ написан
Комментировать
rim89
@rim89
программист-велосипедист
$query = "Truncate `mydb`\n
INSERT INTO mydb SET name = 'Владимир'";
mysqli_query($link, $query);
У меня ошибку выдает. Я так понимаю, что нельзя.

в SQL, запросы разделяются ";"
Если надо разные запросы, на примере php PDO, то можно так:
$res_1=$db->query('SELECT count(*) FROM data WHERE summ > 4000');
$res_2=$db->query('SELECT count(*) FROM data WHERE summ < 1000');

Если надо в 1 тот же запрос передавать разные данные, то используют prepared statments
$stmt = $db->prepare("INSERT INTO users (firstname, lastname, email) VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);
$firstname = "John";
$lastname = "Smith";
$email = "john@test.com";
$stmt->execute();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽