mysqli: может ли он подготовить несколько запросов в одном выражении?

Я хотел бы знать, могу ли я подготовить один оператор mysqli, который выполняет несколько запросов:

mysqli->prepare(query1 ...1,2,3 param...; query2...4,5 param...); or mysqli->prepare(insert into ...1,2,3 param...; insert into...4,5 param...); and after all mysqli->bind_param("sssss", 1, 2, 3, 4, 5); 

Таким образом, он делает ошибку: вызовите функцию-член bind_param () для не-объекта в …

 $stmt = $sql->getQueryPrepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?); INSERT INTO process (id_user, idp) VALUES (?,?);"); $stmt->bind_param("ssssss",$id, $username, $pw, $email, $id, $idp); $stmt->execute(); $stmt->close(); 

Related of "mysqli: может ли он подготовить несколько запросов в одном выражении?"

Подготовленный оператор может выполнять только один запрос MySQL. Вы можете подготовить столько операторов, сколько хотите, в разных переменных:

 $stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)"); $stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);"); 

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

Кроме того, общий совет: «вызов функции-члена для не-объекта» – это стандартная ошибка, которую вы получаете, когда prepare() терпит неудачу, и поэтому $stmt не является фактически подготовленным объектом-агентом. Обычно это означает, что вам нужно искать ошибку в инструкции prepare() а не что-нибудь позже.

Нет, один вызов функции mysqli prepare () не может сразу подготовить несколько запросов. Тем не менее, вы можете подготовить несколько запросов для выполнения, используя разные переменные. Документация для этой функции доступна здесь.

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