PHP MySQLi中的准备好的语句
示例
请阅读防止通过参数化查询进行SQL注入,以全面了解为何准备好的语句可帮助您保护SQL语句免受SQL Injection攻击
$conn这里的变量是一个MySQLi对象。有关更多详细信息,请参见MySQLi connect示例。
对于这两个例子中,我们假设$sql是
$sql = "SELECT column_1FROM table
WHERE column_2 = ?
AND column_3 > ?";
该?代表我们将在稍后提供值。请注意,无论类型如何,我们都不需要为占位符加上引号。我们也只能提供的查询,这意味着数据部分的占位符SET,VALUES和WHERE。您不能在SELECT或FROM部分中使用占位符。
面向对象的风格
if ($stmt = $conn->prepare($sql)) {$stmt->bind_param("si", $column_2_value, $column_3_value);
$stmt->execute();
$stmt->bind_result($column_1);
$stmt->fetch();
//现在使用变量$column_1,就像其他任何PHP变量一样
$stmt->close();
}
程序风格
if ($stmt = mysqli_prepare($conn, $sql)) {mysqli_stmt_bind_param($stmt, "si", $column_2_value, $column_3_value);
mysqli_stmt_execute($stmt);
// 在这里获取数据
mysqli_stmt_close($stmt);
}
的第一个参数$stmt->bind_param或第二个参数mysqli_stmt_bind_param由SQL查询中相应参数的数据类型确定:
参数 | 绑定参数的数据类型 |
---|---|
i | 整数 |
d | 双 |
s | 串 |
b | 斑点 |
参数列表需要按照查询中提供的顺序进行。在此示例中si,第一个参数(column_2 = ?)是字符串,第二个参数(column_3 > ?)是整数。
有关检索数据,请参见如何从准备好的语句中获取数据。
以上是 PHP MySQLi中的准备好的语句 的全部内容, 来源链接: utcz.com/z/321372.html