MySQLi multi_query结果供以后使用

时间:2013-08-08 23:26:33

标签: php mysqli

我正在使用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时,还有一件事,预备语句是不可能的,对吗?

1 个答案:

答案 0 :(得分:2)

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

使用multi_query,这是可能的。

此外,您必须获取并结束每个查询,然后它就消失了。您无法随意更改查询结果,必须按照发布的顺序获取它们。

更好的方法是执行独立的简单查询。这样你就可以使用准备好的语句,只要你没有获得大量的数据,它就可能会使用相同数量的内存而不会惹恼任何人。