首页 > 后端开发 > php教程 > 如何在 SQL 中正确连接变量和准备好的语句?

如何在 SQL 中正确连接变量和准备好的语句?

Linda Hamilton
发布: 2024-12-16 02:50:11
原创
462 人浏览过

How to Properly Concatenate Variables with Prepared Statements in SQL?

将变量与预准备语句连接

使用预准备语句时,必须将变量与 SQL 查询正确连接。不正确的语法可能会导致错误,例如以下代码片段中遇到的错误:

$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{$var}%' '; // Error: Number of variables doesn't match number of parameters
$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% '; // Error: Wrong SQL
登录后复制

正确的方法

要避免这些错误,请使用以下步骤:

  1. 将您的参数与准备好的通配符连接起来语句:
$likeVar = "%" . $yourParam . "%";
登录后复制
  1. 使用 ? 准备查询作为占位符:
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
登录后复制
  1. 将参数绑定到准备好的语句:
$stmt->bind_param("s", $likeVar);
登录后复制

在此示例中, $likeVar 包含要作为的值使用通配符(“%...%”)进行搜索。将其绑定到 s(字符串)参数类型可确保它在数据库查询中得到正确处理。

不区分大小写

如果您需要不区分大小写的搜索,可以将 COLLATE utf8mb4_bin 子句添加到您的查询:

$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ? COLLATE utf8mb4_bin");
登录后复制

以上是如何在 SQL 中正确连接变量和准备好的语句?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板