php实现多条查询
PHP实现多条查询的方法
在PHP中执行多条查询可以通过多种方式实现,具体取决于使用的数据库扩展(如MySQLi或PDO)以及查询的类型。
使用MySQLi多查询
MySQLi扩展提供了multi_query方法,允许一次性执行多条SQL语句,语句之间用分号分隔。

$mysqli = new mysqli("localhost", "username", "password", "database");
$query = "SELECT * FROM table1; SELECT * FROM table2;";
if ($mysqli->multi_query($query)) {
do {
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_assoc()) {
// 处理结果
}
$result->free();
}
} while ($mysqli->more_results() && $mysqli->next_result());
}
$mysqli->close();
使用PDO执行多条查询
PDO默认不支持一次执行多条查询,但可以通过以下方式实现:

$pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
$queries = [
"SELECT * FROM table1",
"SELECT * FROM table2"
];
foreach ($queries as $query) {
$stmt = $pdo->query($query);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
// 处理结果
}
}
事务处理多条查询
对于需要原子性执行的多条更新操作,可以使用事务:
$pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
try {
$pdo->beginTransaction();
$pdo->exec("UPDATE table1 SET column1 = value1");
$pdo->exec("UPDATE table2 SET column2 = value2");
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
throw $e;
}
预处理语句执行多条相似查询
对于需要执行多条结构相似但参数不同的查询,可以使用预处理语句:
$mysqli = new mysqli("localhost", "username", "password", "database");
$stmt = $mysqli->prepare("INSERT INTO table (column1, column2) VALUES (?, ?)");
$data = [
['value1', 'value2'],
['value3', 'value4']
];
foreach ($data as $row) {
$stmt->bind_param("ss", $row[0], $row[1]);
$stmt->execute();
}
$stmt->close();
$mysqli->close();
每种方法适用于不同场景,选择时需考虑查询类型、性能需求和安全要求。






