Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组的PHP MySQLi绑定参数_Php_Mysql_Mysqli - Fatal编程技术网

数组的PHP MySQLi绑定参数

数组的PHP MySQLi绑定参数,php,mysql,mysqli,Php,Mysql,Mysqli,我对基于提供的标识符数组(MAC地址)返回一些信息的PHP脚本有问题 它给了我500个未指定的错误 if (!isset($_POST['macs'])) { echo 'Please enter mac addresses!'; die; } $mysqli = new mysqli("x", "x", "x", "x"); /* check connection */ if ($mysqli->connect_error) die("$mysqli->

我对基于提供的标识符数组(MAC地址)返回一些信息的PHP脚本有问题

它给了我500个未指定的错误

if (!isset($_POST['macs'])) {
    echo 'Please enter mac addresses!';
    die;
}

$mysqli = new mysqli("x", "x", "x", "x");

/* check connection */
if ($mysqli->connect_error)
    die("$mysqli->connect_errno: $mysqli->connect_error");

$stmt = $mysqli->stmt_init();

/* create a prepared statement */

$query = "SELECT username, mac FROM user WHERE mac IN (" . str_repeat("?,", count($_POST['macs']));
$query = rtrim($query, ",");
$query = $query . ')';

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

    call_user_func_array(array($stmt, "bind_param"), array_merge(array('s'), $_POST['macs']));

    /* execute query */
    $stmt->execute();

    $result = $stmt->get_result();

    while ($row = $result->fetch_assoc()) {
        echo $row['username'];
    }

    /* close statement */
    mysqli_stmt_close($stmt);
}


mysqli_close($link);
这是我通过Postman Chrome应用程序发布的内容:

macs[0] = 'F0:72:8C:F3:B5:66'
macs[1] = 'FA:72:8C:F3:B5:66'

至少有人能告诉我是什么导致了这个问题吗。我猜这是
调用\u user\u func\u数组
调用,但我不确定实际的问题是什么。

//如果将数组元素绑定到准备好的语句,则必须首先使用使用的键声明数组:

对于在PHP版本5.3+中通过调用_user_func_array()调用mysqli::bind_param()并使用动态数量的参数的问题,除了使用额外的函数来构建数组元素的引用之外,还有另一种解决方法。 可以使用反射调用mysqli::bind_param()

例如:

<?php 
$db     = new mysqli("localhost","root","","tests"); 
$res    = $db->prepare("INSERT INTO test SET foo=?,bar=?"); 
$refArr = array("si","hello",42); 
$ref    = new ReflectionClass('mysqli_stmt'); 
$method = $ref->getMethod("bind_param"); 
$method->invokeArgs($res,$refArr); 
$res->execute();  

你的PHP错误日志怎么说?