当前位置: 首页 > 面试题库 >

在准备好的语句中使用LIKE'%{$ var}%'的正确方法?[mysqli]

高豪
2023-03-14
问题内容

这行不通

$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 %{?}% ';

致命错误:错误的SQL:SELECT * FROM
usersWHERE用户名类似%{?}%错误:第1行的/home/rgero/public_html/php/searchadmins.php中的0

我将如何处理?我正在尝试搜索播放器功能,以在您在表单中输入内容时更新结果,例如google在输入时已经显示了答案。如果您输入dm,我需要用户名Admin,以便在包含“
dm”的其他用户名中显示它。还应该不区分大小写


问题答案:

尝试这个

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

您只需使用即可准备查询,?然后使用绑定参数bind_param



 类似资料:
  • 问题内容: 我正在使用准备好的语句来执行mysql数据库查询。我想实现基于各种关键字的搜索功能。 为此,我需要使用关键字,我知道很多。而且我之前也使用过预处理语句,但是我不知道如何使用它,因为从以下代码中,我将在哪里添加? 我可以直接在as 或类似的东西中使用它吗?我在网络上看到很多帖子,但是在任何地方都没有好的答案。 问题答案: 您需要在值本身中而不是在准备好的语句SQL字符串中进行设置。 因此

  • 问题内容: 我正在使用准备好的语句来执行mysql数据库查询。我想实现基于各种关键字的搜索功能。 为此,我需要使用关键字,这一点我知道很多。而且我之前也使用过预处理语句,但是我不知道如何使用它,因为从以下代码中,我将在哪里添加? 我可以直接在或类似的东西中使用它吗?我在网络上看到很多帖子,但在任何地方都没有好的答案。 问题答案: 你需要在值本身中而不是在准备好的语句SQL字符串中进行设置。 因此,

  • 我想使用带有LIKE关键字的java准备语句。我正在尝试匹配日期字符串。这是我的密码。 它给出了以下例外。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,了解在“?”附近使用的正确语法?和s.date一样?订单截止日期DESC LIMIT 1'第1行

  • 问题内容: 在mysqli准备好的语句中,NULL变成’‘(对于字符串)或0(对于整数)。我想将其存储为真正的NULL。有什么办法吗? 问题答案: 我知道这是一个旧线程,但是可以将真实的NULL值绑定到准备好的语句(请阅读this)。 实际上,您可以使用mysqli_bind_parameter将NULL值传递给数据库。只需创建一个变量并将NULL值(请参见手册页)存储到该变量并将其绑定即可。无论

  • 问题内容: 我正在尝试运行以下查询,但通配符出现问题。 我收到一条错误消息,指出:无法通过引用传递参数2。我需要使用通配符的原因是因为列的数据包含序列化的数组。我想,如果有一种更简单的方法来处理此问题,该怎么办? 提前致谢! 问题答案: 您必须通过引用传递参数,这意味着您必须传递 单个变量 (而不是串联字符串)。不过,没有理由您不能专门构造这样的变量来传递: