带有SQL数组的数组映射mysqli_query

时间:2014-09-06 08:55:44

标签: mysql array-map

我在PHP中将脚本从MySQL升级到MySQLi扩展。 代码如下:

array_map('mysqli_query', $sqls);

而且,我在那里遇到了一个错误的错误。

Warning: mysqli_query() expects at least 2 parameters, 1 given in file.php on line __

$ sqls是一个有效SQL字符串数组。 mysqli_需要提供$连接。 但是可以使用相同的 array_map 运行吗?

1 个答案:

答案 0 :(得分:0)

是的,你可以。 array_map可以传递多个参数,每个参数都是一个数组,其中包含您需要传递给回调函数的值。因此,在这种情况下,您需要一个连接数组和一个sqls数组。

您可以使用array_fill创建一个包含相同连接副本的数组(对于对象,只复制引用,因此您不会与数据库建立多个实际连接。)

然后,这应该有效:

<?php

$connections = array_fill(0, count($sqls), $connection);

array_map('mysqli_query', $connections, $sqls);

为了使它更容易理解,我将其包装在一个函数中。

function mysqli_query_multiple($connection, $sqls)
{
    $connections = array_fill(0, count($sqls), $connection);
    array_map('mysqli_query', $connections, $sqls);
}

或者使用for循环可能同样简单易读。