Uncaught Error: mysqli_stmt::bind_param(): Argument #7
Uncaught Error: mysqli_stmt::bind_param(): Argument #7
我不知道为什么,但是 prepere if (!$stmt->prepare($sql))
工作正常。但是当我使用 $stmt->bind_param();
时,我得到了一个错误。变量的类型是正确的,我知道我不必使用 strval() 但它只是为了确定这不是问题。我已经搜索了几天了,但我仍然被困住了
代码:
function validPost(){
$sensorMac = strval($_POST['mac']);
$sensorName = strval($_POST['nameSensor']);
$sensorLocation = strval($_POST['locationSensor']);
$sensorUnitId = intval($_POST['unitId']);
$sensorInfo = strval( $_POST["infoSensor"]);
$sql = "INSERT INTO sensor ( mac, name, location, info, unitID, user_id) values(?, ?, ?, ?, ?, ?);";
$stmt = mysqli_stmt_init($GLOBALS['conn']);
if (!$stmt->prepare($sql)) {
header("location: /webservices/sensor/add-sensor.php?show=stmt");
exit();
}
$stmt->bind_param("ssssii", $sensorMac, $sensorName , $sensorLocation, $sensorInfo , $sensorUnitId, intval($_SESSION['userId']));
$stmt->execute();
$stmt->close();
}
我得到的错误:
PHP Fatal error: Uncaught Error: mysqli_stmt::bind_param(): Argument #7 cannot be passed by reference in D:\webpage\webservices\sensor\add-sensor.php:40
Stack trace:
#0 D:\webpage\webservices\sensor\add-sensor.php(74): validPost()
#1 {main}
thrown in D:\webpage\webservices\sensor\add-sensor.php on line 40
这是正在使用的数据库:
my database
bind_param() 函数要求类型参数之后的所有参数都通过引用传递。
但是你的第 7 个论点是:
intval($_SESSION['userId'])
这不是左值。它不是您可以从中获取参考的变量。
换句话说,你不能这样做:
intval($_SESSION['userId']) = 12345; // ERROR
所以你必须做一个变量:
$userId = intval($_SESSION['user_id']);
$stmt->bind_param("ssssii", $sensorMac, $sensorName, $sensorLocation,
$sensorInfo, $sensorUnitId, $userId);
我不知道为什么,但是 prepere
if (!$stmt->prepare($sql))
工作正常。但是当我使用 $stmt->bind_param();
时,我得到了一个错误。变量的类型是正确的,我知道我不必使用 strval() 但它只是为了确定这不是问题。我已经搜索了几天了,但我仍然被困住了
代码:
function validPost(){
$sensorMac = strval($_POST['mac']);
$sensorName = strval($_POST['nameSensor']);
$sensorLocation = strval($_POST['locationSensor']);
$sensorUnitId = intval($_POST['unitId']);
$sensorInfo = strval( $_POST["infoSensor"]);
$sql = "INSERT INTO sensor ( mac, name, location, info, unitID, user_id) values(?, ?, ?, ?, ?, ?);";
$stmt = mysqli_stmt_init($GLOBALS['conn']);
if (!$stmt->prepare($sql)) {
header("location: /webservices/sensor/add-sensor.php?show=stmt");
exit();
}
$stmt->bind_param("ssssii", $sensorMac, $sensorName , $sensorLocation, $sensorInfo , $sensorUnitId, intval($_SESSION['userId']));
$stmt->execute();
$stmt->close();
}
我得到的错误:
PHP Fatal error: Uncaught Error: mysqli_stmt::bind_param(): Argument #7 cannot be passed by reference in D:\webpage\webservices\sensor\add-sensor.php:40
Stack trace:
#0 D:\webpage\webservices\sensor\add-sensor.php(74): validPost()
#1 {main}
thrown in D:\webpage\webservices\sensor\add-sensor.php on line 40
这是正在使用的数据库: my database
bind_param() 函数要求类型参数之后的所有参数都通过引用传递。
但是你的第 7 个论点是:
intval($_SESSION['userId'])
这不是左值。它不是您可以从中获取参考的变量。
换句话说,你不能这样做:
intval($_SESSION['userId']) = 12345; // ERROR
所以你必须做一个变量:
$userId = intval($_SESSION['user_id']);
$stmt->bind_param("ssssii", $sensorMac, $sensorName, $sensorLocation,
$sensorInfo, $sensorUnitId, $userId);