数组的PHP MySQLi绑定参数
我对基于提供的标识符数组(MAC地址)返回一些信息的PHP脚本有问题 它给了我500个未指定的错误数组的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->
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错误日志怎么说?