MYSQLI多查询功能
Posted
技术标签:
【中文标题】MYSQLI多查询功能【英文标题】:MYSQLI multi query function 【发布时间】:2020-02-03 11:46:02 【问题描述】:我想创建一个函数来自动连接到数据库并执行给定的查询,但我无法让它工作并且它没有给出错误。 我认为我没有以正确的方式输出,我的目标是输出一个存储查询返回的所有值的数组。
这是我目前的代码,希望你能帮到你:
public function db_query()
$ini = parse_ini_file($_SERVER['DOCUMENT_ROOT'] . '/app.ini');
$mysqli = new mysqli($ini['db_location'], $ini['db_user'], $ini['db_password'], $ini['db_name']);
// create string of queries separated by ;
$query = "SELECT name FROM mailbox;";
$query .= "SELECT port FROM mailbox";
// execute query - $result is false if the first query failed
$result = mysqli_multi_query($mysqli, $query);
if ($result)
do
// grab the result of the next query
if (($result = mysqli_store_result($mysqli, 0)) === false && mysqli_error($mysqli) != '')
echo "Query failed: " . mysqli_error($mysqli);
while ($row = $result->fetch_row())
echo $row[0];
while (mysqli_more_results($mysqli) && mysqli_next_result($mysqli)); // while there are more results
else
echo "First query failed..." . mysqli_error($mysqli);
注意:我没有为查询添加参数只是为了测试 目的。
【问题讨论】:
SELECT name, port FROM mailbox
够了
我在一张表中添加了多个查询来测试功能
在您的do
循环中,您只会在 store_result 操作失败的情况下回显任何内容。如果成功,则不会回显任何内容。
【参考方案1】:
public function db_query($mysqli)
$return = [];
$result = mysqli_query($mysqli, "SELECT name FROM mailbox");
while ($row = $result->fetch_row())
$return[] = $row[0];
$result = mysqli_query($mysqli, "SELECT port FROM mailbox");
while ($row = $result->fetch_row())
$return[] = $row[0];
return $return;
简单、干净、高效、始终有效
【讨论】:
另外,在进入while循环之前检查$result。 不,您永远不应该手动检查结果。配置mysqli改为报告错误 这应该只有一个查询。为什么要执行两次? @Dharman 因为它是only for test以上是关于MYSQLI多查询功能的主要内容,如果未能解决你的问题,请参考以下文章