PHP MySQLi中的准备好的语句

示例

请阅读防止通过参数化查询进行SQL注入,以全面了解为何准备好的语句可帮助您保护SQL语句免受SQL Injection攻击

$conn这里的变量是一个MySQLi对象。有关更多详细信息,请参见MySQLi connect示例。

对于这两个例子中,我们假设$sql是

$sql = "SELECT column_1 

    FROM 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

回到顶部