MySQL pdo准备语句与通配符

MySQL pdo准备语句与通配符

当我们使用PDO操作MySQL时,通常需要使用prepared statements进行查询。而有时候我们需要在查询条件中使用通配符来代替某些值,这就需要使用wildcards。

阅读更多:MySQL 教程

什么是prepared statements

prepared statements是将SQL语句预处理后再执行的查询方法。使用这种方式可以有效避免SQL注入攻击,同时也可以提升查询性能。下面是一个使用prepared statements的例子:

$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "");
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$id]);
$results = $stmt->fetchAll();
PHP

什么是wildcards

通配符(wildcard)是用来匹配字符串中某一段字符的特殊字符。在MySQL中,常用的wildcards有两个:%_

%代表匹配任意多个字符(包括0个)

例子:查询所有以”A”开头的用户名

$stmt = $pdo->prepare("SELECT * FROM users WHERE name LIKE 'A%'");
$stmt->execute();
$results = $stmt->fetchAll();
PHP

_代表匹配任意单个字符

例子:查询用户名长度为3个字符的用户

$stmt = $pdo->prepare("SELECT * FROM users WHERE name LIKE '___'");
$stmt->execute();
$results = $stmt->fetchAll();
PHP

使用wildcards的prepared statements

当查询条件中需要使用wildcards时,我们使用LIKE关键字替代=

例子:查询所有以”A”开头的用户名

$stmt = $pdo->prepare("SELECT * FROM users WHERE name LIKE ?");
$stmt->execute(['A%']);
$results = $stmt->fetchAll();
PHP

例子:查询用户名包含”oo”的用户

$stmt = $pdo->prepare("SELECT * FROM users WHERE name LIKE ?");
$stmt->execute(['%oo%']);
$results = $stmt->fetchAll();
PHP

总结

在使用prepared statements进行MySQL查询时,可以使用wildcards来简化查询条件的书写。在需要匹配任意多个字符时使用%,需要匹配任意单个字符时使用_。使用prepared statements可以有效避免SQL注入攻击,同时也可以提升查询性能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册