Когда я делаю:
$q = 'insert into movies values("lion king"); select * from movies;'; $result = $db->query($q); echo mysqli_num_rows($result);
он говорит, что $ result является логическим, а не результатом mysqli. если я проверю $ result следующим образом:
if(!$result) echo 'fail';
он выводит «сбой».
Разве mysql не способен обрабатывать более одного запроса за раз? Как я могу это решить?
$db->query('insert into movies values("lion king");'); $db->query('select * from movies;');
Вам нужно использовать mysqli :: multi_query .
Вы можете использовать multi_query, который трудно использовать, но в общем случае нет, вы должны использовать только один запрос за раз.
$q = 'insert into movies values("lion king")'; $result = $db->query($q); $q = 'select * from movies'; $result = $db->query($q); echo mysqli_num_rows($result);
Не путайте, как вы пишете «запросы» в интерфейсе командной строки MySQL с тем, как вы это делаете с API.
Команда MySQL просто обертывает API чем-то большим количеством подобных оболочек.
Используя API, вы действительно можете делать только один запрос за раз. Конечно, клиентская сторона API могла бы сделать что-то умное и интерпретировать полуколоны, разбившись на несколько запросов для вас, но это, вероятно, просто не так полезно для достаточного количества людей.