MySQLi 预准备语句不绑定整数



我是预处理语句的新手。如果我插入虚拟数据,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 表示整数

希望这对你有帮助

最新更新