PHP MySQL 预处理语句
创始人
2025-06-01 14:57:58

预处理语句对于防止 MySQL 注入是非常有用的。

预处理语句及绑定参数
预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。
预处理语句的工作原理如下:

  1. 预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 “?” 标记 。例如:
INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
  1. 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。
  2. 执行:最后,将应用绑定的值传递给参数(“?” 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。
    相比于直接执行SQL语句,预处理语句有两个主要优点:
connect_error) {die("连接失败: " . $conn->connect_error);
}// 预处理及绑定
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);// 设置参数并执行
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();$firstname = "Julie";
$lastname = "Dooley";
$email = "julie@example.com";
$stmt->execute();echo "新记录插入成功";$stmt->close();
$conn->close();
?>

解析以下实例的每行代码:

INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)

在 SQL 语句中,我们使用了问号 (?),在此我们可以将问号替换为整型,字符串,双精度浮点型和布尔值。

接下来,让我们来看下 bind_param() 函数:

$stmt->bind_param("sss", $firstname, $lastname, $email);

参数有以下四种类型:

i - integer(整型)
d - double(双精度浮点型)
s - string(字符串)
b - BLOB(binary large object:二进制大对象)

相关内容

热门资讯

湾沚不远 年味很近|这个春节把... 新春溜娃指南NEW YEAR TRAVEL这个春节把年味“玩”出来过年的仪式感是不是也该换个新皮肤了...
渭源县必须品尝的小吃都有哪些 渭源县,这座充满魅力的小城,有着深厚的文化底蕴和独特的地域风情,而当地的小吃更是让人垂涎欲滴。每一种...
年夜饭系列之,排骨焖豆角:肉香... 每次家里来客,我总爱端出这道排骨焖豆角,油亮的排骨裹着浓稠的酱汁,翠绿的豆角吸饱了肉香,刚上桌就被抢...
普通草鱼8元/斤,杭州这条“龙... 马上就要过年了,大家少不了吃鱼。 北方的菜市场上,常见的草鱼也就几块钱一斤,买一条大草鱼100块钱顶...
广东人命中注定的另一半! 「第1693期」 什么是虾虾霸霸? 想每天看粤知一二的视频?