使用预准备语句时,必须将变量与 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
要避免这些错误,请使用以下步骤:
$likeVar = "%" . $yourParam . "%";
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->bind_param("s", $likeVar);
在此示例中, $likeVar 包含要作为的值使用通配符(“%...%”)进行搜索。将其绑定到 s(字符串)参数类型可确保它在数据库查询中得到正确处理。
如果您需要不区分大小写的搜索,可以将 COLLATE utf8mb4_bin 子句添加到您的查询:
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ? COLLATE utf8mb4_bin");
以上是如何在 SQL 中正确连接变量和准备好的语句?的详细内容。更多信息请关注PHP中文网其他相关文章!