php - 在准备好的 SQL LIKE - PHP 中使用通配符 - 或者我的结果是否损坏?
问题描述
警告 -
- google了很多次
- 在堆栈溢出中查看了几个答案(我知道可能看起来不够努力)
- 在 w3schools 中查看过准备好的陈述
- 已经查看了几个关于 PHP 中准备好的语句的在线教程
- 曾与熟悉 SQL 但对调试 PHP 不太了解的本地开发人员合作
- 曾与具有一定 SQL 知识的本地软件工程师合作进行调试,但无济于事
所以这里 - 我有一个简单的表单提交来搜索数据库中的列 - 使用 LIKE 和通配符。我已经检查了 PHP 中的 SQL(预先使用准备好的语句)和 MySQL 本身,并且代码是正确的 - SELECT * FROM database.table WHERE Col LIKE '%$variable%' <-- 有效。
我现在正在使用经过充分准备的语句以在现实世界中使用(我已经 5 年没有编写 PHP 代码了,所以这是一个学习曲线)。
我所有准备好的语句都可以工作,SELECT、INSERT 等,除了这个搜索......
$searchParam = mysqli_real_escape_string($conn, htmlspecialchars($_POST['Search']));
$searchStmt = $conn->prepare("SELECT ID, Title FROM insertdatabasenamehere.insertTableNameHere WHERE Title LIKE ?");
$searchItem = '%'.$searchParam.'%';
$searchStmt->bind_param("s", $searchItem);
$searchStmt->execute();
$searchQueryResult = $searchStmt->get_result();
希望到目前为止一切顺利,除非有任何琐碎的 OMG,您为什么要这样做……这应该基于以前准备好的 SQL 语句。然后它变得很奇怪。
if ($searchStmt->num_rows > 0) {
//some html here
while($row = $searchQueryResult->fetch_assoc()) {
// loop through the result set echoing out $title and $ID
}
} else {
echo "No result found";
}
每次 - 没有找到结果所以它不会在 LIKE 或任何东西上出错,只是没有匹配,并且数据库中肯定有匹配的项目。
我哪里出错了??
谢谢你!
解决方案
推荐阅读
- scala - 如何从 Spark DataFrame 中的 AWS S3 读取多个文件?
- azure-active-directory - Azure 所有者角色和共同管理员之间的区别
- python - 如何有效地比较日期时间对象
- javascript - 电子从 ipcMain 发送数据到 ipcRender
- javascript - Javascript - 围绕异步 WebSocket 构建异步接口
- python - python-elasticsearch:如何启用 curl 日志记录?
- sql-server - 获取值不为空的第一个条目 SQL Server 2012
- elasticsearch - kibana 中的 ElasticSearch 内存使用情况与 Windows 不匹配
- javascript - 传入的对象无效,应为 ':' 或 '}'
- php - 包含的函数不能在 php 中包含的标头和导航栏文件中工作