0

我正在使用 MySQLi multi_query 一次处理多个选择状态。我想知道的是如何处理结果,所以我以后可以在代码中使用它们。

例子:

<?php

//connection stuff

$query = "SELECT name, surname FROM database1;";
$query.= "SELECT car, year, type FROM database2 WHERE carID='1';";
$query.= "SELECT product, price FROM database3;";

if ($mysqli->multi_query($query)) {

if($result = $mysqli->store_result()) {

while($row = $result->fetch_row()) {

-->   what to do here?

}

}

}

?>

<html>

<div id='persona'>
<?php
foreach() {
--> print name + surname
}
?>
</div>

<div id='cars'>
<?php
foreach() {
--> print car + year + type
}
?>
</div>

<div id='product'>
<?php
foreach() {
--> print product + price
}
?>
</div>

</html>

还有一件事,在使用 multiple_query 时,准备好的语句是不可能的,对吧?

4

1 回答 1

2

将不相关的查询放在一个多查询调用中确实没有任何好处。事实上,被 SQL 注入攻击的风险要大得多!常规查询函数每次调用只允许一个查询,因此不可能在 SELECT 语句中注入一些东西,过早结束它,然后添加一个 DELETE。

使用 multi_query,这是可能的。

此外,您必须获取并结束每个查询,然后它就消失了。您不能随意在查询结果之间进行更改,它们必须完全按照它们发出的顺序来获取。

更好的方法是只执行独立的简单查询。这也将允许您使用准备好的语句,只要您没有返回大量数据,它可能会使用相同数量的内存并且不会惹恼任何人。

于 2013-08-08T23:35:09.953 回答