我读过多个关于如何编写这些查询的示例,但我很难在使用bindParam时运行这个特定的like

这是匹配以a开头的用户名的正确方法吗?

$term = "a";
$term = "'$term%'";

$sql = "SELECT username 
        FROM `user` 
        WHERE username LIKE :term 
        LIMIT 10";      

$core = Connect::getInstance();

$stmt = $core->dbh->prepare($sql);
$stmt->bindParam(':term', $term, PDO::PARAM_STR);
$stmt->execute();
$data = $stmt->fetchAll();

推荐答案

不,你不需要内部的单引号,所以只需要$term = "$term%";

您现在运行的语句将try 匹配'a%',而不是a%

bindParam将确保所有字符串数据在提供给SQL语句时自动正确地加引号.

Database相关问答推荐

重新运行后未找到 Taipy 场景

PostgreSQL WHERE IN LIKE 查询

PostgreSQL 参数化 Order By / Limit in table 函数

在sql server中拆分字符串

如何连接到 MDF 数据库文件?

NoSql DB 和 OO Db 有什么区别?

一个 5MB 的 SQL 数据库可以存储多少数据?

错误:mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

PostgreSQL - 将每个表转储到不同的文件中

将图像文件存储在 Mongo 数据库中,这是个好主意吗?

使用varchar作为主键?

将数据库表用作作业(job)队列的最佳方式是什么?

如何使用 MySQL Workbench 更改字段的值?

多语言数据库,默认回退

触发器、断言和判断之间有什么区别?

是什么导致pyodbcunable to connect to data source?

从 CSV 文件填充 Android 数据库?

将内存数据库保存到磁盘

试图在我的环境中设置 Postgres,但似乎无法获得 intidb 的权限

LevelDB 支持 java 吗?