php mysql не выполняется 2 запроса подряд

337
21 декабря 2016, 02:26

В php-скрипте идут два запроса:

$qe = mysql_query("INSERT INTO baob (arm,detk,ib) VALUES('$did',1,'$da')");
$qey= mysql_query("INSERT INTO baob (arm,detk,ib) VALUES('$arm',2,'$da')");

Первое выполняется, второе нет.

Если первый запрос закомментировать - выполняется второй. Как заставить выполниться оба запроса?

Answer 1

Попробуйте использовать класс mysqli для работы с БД.

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

Пример:

$connect = new mysqli(host,login,pass,db);
$connect->query("INSERT INTO baob (arm,detk,ib) VALUES ('$did',1,'$da'), ('$arm',2,'$da');");
$connect->close();

Перед этим, переменные

$did, $da, $arm

следует экранировать: или методом htmlspecialchars(), если там будет передаваться html-разметка или так, если передаются просто значения:

$сonnect->real_escape_string($did);
$сonnect->real_escape_string($da);
$сonnect->real_escape_string($arm);

если нужно экранировать обычные значения. Это позволит избежать проблем с sql-инъекциями. Но даже это не всегда спасет. Более подробно описывается здесь.

//Второй вариант:
$connect = new mysqli(host,login,pass,db);
$connect->query("INSERT INTO baob (arm,detk,ib) VALUES('$did',1,'$da')");
$connect->query("INSERT INTO baob (arm,detk,ib) VALUES('$arm',2,'$da')");
$connect->close();

Или с использованием подготавливаемых запросов:

$connect = new mysqli(host,login,pass,db);
$stmt = $connect->prepare("INSERT INTO baob (arm,detk,ib) VALUES (?,1,?), (?,2,?);";
$stmt->bind_param('ssss',$did,$da,$arm,$da);
$stmt->execute();
$stmt->close();
$connect->close();

Используемые методы: prepare(), bind_param();

UPD. Добавлены советы по использованию первого варианта работы и ссылка на дополнительный материал.

READ ALSO
Как создать двумерный массив на основе данных из базы

Как создать двумерный массив на основе данных из базы

ЗдравствуйтеУ меня есть двумерный массив:

373
Mysql: обновление триггером своей же таблицы

Mysql: обновление триггером своей же таблицы

У меня есть таблица с платежами, где помимо суммы платежа хранится баланс человека на момент платежаЯ хотел с помощью триггера mysql сделать...

341
Не выводиться информация

Не выводиться информация

Не выводиться никакой информации(ошибок тоже нет), хотя таблица не не пустая

296