php - 将 LIKE '%{$var}%' 与准备好的语句一起使用的正确方法?

标签 php mysql sql mysqli

这行不通

$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';

警告:mysqli_stmt::bind_param():变量数量与第 1 行/home/rgero/public_html/php/searchadmins.php 中准备好的语句中的参数数量不匹配

这个也不行

$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';

fatal error :错误的 SQL:SELECT * FROM users WHERE username LIKE %{?}% 错误:/home/rgero/public_html/php/searchadmins.php 第 1 行中的 0

我该怎么做?我正在尝试搜索播放器功能,该功能会在您输入表单时更新结果,就像谷歌在您输入时已经显示答案的方式一样。如果您键入 dm,我需要用户名 Admin 以在包含“dm”的其他用户名中显示它。它也应该不区分大小写

最佳答案

试试这个

$likeVar = "%" . $yourParam . "%";
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->bind_param("s", $likeVar);
$stmt->execute();

您需要使用 ? 准备查询,然后使用 bind_param 绑定(bind)参数。

关于php - 将 LIKE '%{$var}%' 与准备好的语句一起使用的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28385145/

相关文章:

mysql - MySQL 查询格式错误

javascript - 如何为 YouTube 视频创建倒带功能

php - CakePHP 找到 WHERE NOT EQUAL

mysql - 无法使用动态sql在mysql中创建表

mysql - 如何删除我机器中的所有数据库而不是将它们一一删除?

sql - 使用oracle在外连接中只获取一行

sql - 将多个时间间隔内的天数相加

PHP多行字符串与PHP

php - 如何忽略 PHP 中准备好的 mysqli 查询中的参数?

java - JPA:JPARepository 中的 ORDER BY 在 GROUP BY 之前