mysqli::multi_query
(mysqli_multi_query)对数据库执行查询
mysqli::multi_query
PHP 5, PHP 7, PHP 8
mysqli::multi_query 用于执行一条或多条以分号分隔的 SQL 语句。该函数通常用于一次执行多条 SQL 查询,比如在安装程序中批量创建数据表。
面向对象风格:
bool mysqli::multi_query(string $query)
过程化风格:
bool mysqli_multi_query(mysqli $link, string $query)
如果第一个语句执行成功,则返回 true。否则返回 false。如果返回 true,可以使用 mysqli::store_result() 或 mysqli::use_result() 获取第一个结果集,并使用 mysqli::next_result() 移动到下一个结果集。
<?php $mysqli = new mysqli("localhost", "user", "password", "database"); <p>if ($mysqli->connect_errno) {<br> echo "连接失败: " . $mysqli->connect_error;<br> exit();<br> }</p> <p>$sql = "INSERT INTO test (name) VALUES ('Alice');";<br> $sql .= "INSERT INTO test (name) VALUES ('Bob');";<br> $sql .= "SELECT * FROM test;";</p> <p>if ($mysqli->multi_query($sql)) {<br> do {<br> if ($result = $mysqli->store_result()) {<br> while ($row = $result->fetch_assoc()) {<br> echo "Name: " . $row["name"] . "<br>";<br> }<br> $result->free();<br> }<br> } while ($mysqli->more_results() && $mysqli->next_result());<br> } else {<br> echo "多查询执行失败: " . $mysqli->error;<br> }</p> <p>$mysqli->close();<br> ?><br>
上面的示例中,我们首先通过 mysqli 创建连接,然后构造了一串包含两个 INSERT 和一个 SELECT 的 SQL 语句,通过 multi_query 一次性执行它们。如果有结果集返回(如 SELECT),就用 store_result 取出结果并循环输出。通过 next_result 移动到下一个结果集。