我正在对数据库服务器的单个请求中执行多个SQL插入命令和一个选择查询,但我也会为每个命令返回结果。
简化示例:
$query = 'INSERT INTO table1 (column1) VALUES (123);' .
'SET @id = LAST_INSERT_ID();' .
'INSERT INTO table2 (column1, column2) VALUES (@id, 456);' .
'INSERT INTO table3 (column1, column2) VALUES (@id, 789);' .
'SELECT @id';
$conn = new mysqli('server', 'user', 'pass', 'name');
if ($conn->multi_query($query)) {
do {
if ($result = $conn->store_result()) {
while ($row = $result->fetch_row()) {
printf("%s\n", $row[0]);
}
$result->free();
}
} while ($conn->next_result());
}
这导致三个空结果,第四个是我想要的结果。
是否有可能不返回非查询(INSERT和SET)的结果,只得到一个结果(对于SELECT)所以我不必通过每个查询获得我想要的结果?< / p>
NB。由于动态生成的INSERT的复杂性和可变性,不希望为此使用存储过程