PDO绑定参数进行模糊查询问题
使用PDO绑定数据去进行模糊查询遇到的问题
<?php try { $dsn = 'mysql:host=localhost:3306;dbname=test';// 数据源配置 $username = 'root'; // 数据库用户 $passwd = ''; // 数据库密码 $pdo = new PDO($dsn, $username, $passwd); $pdo->query("SET NAMES utf8"); /***** // 错误的写法 $sql = " SELECT `id`,`name` FROM `students` WHERE `name` LIKE '%:name%' "; bindValue(':name', $name, PDO::PARAM_STR); 这样会出错,因为为了防止sql注入,其内部将%做了修改。 可以使用 $stmt->debugDumpParams(); 查看 应该这样绑定 $sql = " SELECT * FROM `user` WHERE `username` LIKE :name "; bindValue(':name', '%'.$name.'%', PDO::PARAM_STR); *****/ $sql = " SELECT * FROM `user` WHERE `username` LIKE :name "; $stmt=$pdo->prepare($sql); $name = 'zel'; $stmt->bindValue(':name', '%'.$name.'%', PDO::PARAM_STR); $res = $stmt->execute(); $row = $stmt->fetchAll(PDO::FETCH_ASSOC); var_dump($row); } catch (PDOException $e) { echo $e->getMessage(); }