我是预处理语句的新手。如果我插入虚拟数据,SQL 查询工作正常,并且无需绑定整数 ($id( 即可工作。
我错在哪里?
sql = "UPDATE staff_type SET s_type=?, description=? WHERE s_type_id=?;";
$stmt = mysqli_stmt_init($conn);
mysqli_stmt_prepare($stmt, $sql));
mysqli_stmt_bind_param($stmt, "ssi", $type, $desc, $id);
mysqli_stmt_execute($stmt);
我发现了导致整数参数未绑定的错误。我不知道禁用的输入字段无法发布数据,因此我找到了将"禁用"属性替换为"只读"的解决方案。
在绑定参数之前,您必须准备一个包含参数的 SQL 语句。
$sql = "UPDATE staff_type SET s_type=?, description=? WHERE s_type_id=?;";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssi", $type, $desc, $id);
$stmt->execute();
你必须先准备语句
**Procedural style**
$stmt = mysqli_prepare($conn, "UPDATE staff_type SET s_type=?, description=? WHERE s_type_id=?");
mysqli_stmt_bind_param($stmt, "ssi", $type, $desc, $id);
mysqli_stmt_execute($stmt);
检查 http://php.net/manual/en/mysqli-stmt.bind-param.php
试试这个
$sql= $con->prepare("update staff_type set s_type=?, description=? WHERE s_type_id = ?");
if ($result){
$sql->bind_param('ssi', $s_type, $desc, $s_type_id );
$sql->execute();
}
旁注:S 表示字符串,而 i 表示整数
希望这对你有帮助