php - 无论搜索什么,MYSQL 搜索都会返回表中的所有结果
问题描述
下面的代码与 HTML 配对以在数据库中搜索结果。它应该根据输入到搜索字段中的内容进行搜索。我发布了一个问题并得到了很多关于 SQL 注入的很好的回复,所以我更新了我的代码。
代码选项 1 我尝试过 如果我只是在字段为空的情况下按下搜索按钮,它会返回表中的每个结果。如果我将某些内容放入该字段,它仍会返回表中的每个结果。在字段中放什么并不重要,所有这些代码似乎所做的就是返回表中的每个结果。在搜索不起作用的地方我哪里出错了?
function my_function_name() {
global $wpdb;
$search = trim($_POST['search']);
$query = $wpdb->prepare("SELECT * FROM mytable name WHERE columnname LIKE '%%%s%%'", $search);
$results = $wpdb->get_results($query);
if($results)
{echo json_encode($results); /* echo 'added'; */}
else{ echo '没有找到结果'; } 死; }
代码选项 2 我尝试过 如果我只是在字段为空的情况下按下搜索按钮,它会返回回显“未找到结果”,这是我的 else{ 代码。如果我把一些东西放到这个领域,它仍然会说同样的事情。不管我在里面放了什么
function my_function_name() {
global $wpdb;
$search = $_POST['search'];
$wpdb->prepare( "SELECT * FROM {$wpdb->prefix} mytable WHERE id = %d AND columnname = %s", $id, $secret);
if($results)
{echo json_encode($results); /* echo 'added'; */}
else{ echo 'no results found'; } die; }
的HTML
<form action="<?php echo admin\_url('/admin-ajax.php'); ?>" method="post" id="ajax\_my\_function\_id" autocomplete="off">
Search <input type="text" name="search"><br>
<input type ="submit">
</form>
解决方案
可能它无法正确识别格式说明符,因为它在多个 % 符号内。使用连接运算符。
$query = $wpdb->prepare("SELECT * FROM mytable name WHERE columnname LIKE '%%' . $search . '%%'");
推荐阅读
- excel - 获取由另一列中的值分区的列中的唯一值,并将其扔到以逗号分隔的另一列
- javascript - 使用 PATH 元素在 SVG 中绘制双曲线
- mql4 - EA 在 MQL4 中打开比预期更多的订单
- julia - 在 Julia 中将 NamedTuple 数组转换为数组
- flutter - 使颤振小部件居中的问题
- javascript - 如何在 div 类中获取此 document.body.appendChild 图像?
- pdf - 当我尝试将 Rmarkdown 作为 PDF 运行时,此错误会记录我
- eclipse - 通过命令行安装 eclipse 插件 [Windows]
- material-ui - 如何在 css 而不是 html 中使用 Material UI 图标?
- php - 用户正则表达式匹配文件名并将其分成几部分