我不知道为什么,但预科if (!$stmt->prepare($sql))很好。但是当我使用$stmt->bind_param();的时候,我发现了一个错误。变量的类型是正确的,我知道我不必使用strval(),但它只是shure --这不是问题所在。我已经找了几天了,现在还困在
代码:
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这是正在使用的数据库:我的数据库
发布于 2021-06-21 16:48:37
bind_param()函数要求通过引用传递类型参数之后的所有参数。
但你的第七条理由是:
intval($_SESSION['userId'])这不是一种价值。它不是一个变量,您可以从中获取一个引用。
换句话说,你不能这样做:
intval($_SESSION['userId']) = 12345; // ERROR因此,您必须创建一个变量:
$userId = intval($_SESSION['user_id']);
$stmt->bind_param("ssssii", $sensorMac, $sensorName, $sensorLocation,
$sensorInfo, $sensorUnitId, $userId); https://stackoverflow.com/questions/68071731
复制相似问题