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 移动到下一个结果集。