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

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

Linda Hamilton
Linda Hamilton原创
2024-12-16 02:50:11463浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn