首页 > 解决方案 > 无论搜索什么,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>

标签: phpmysqlwordpresssearch

解决方案


可能它无法正确识别格式说明符,因为它在多个 % 符号内。使用连接运算符。

$query = $wpdb->prepare("SELECT * FROM mytable name WHERE columnname LIKE '%%' . $search . '%%'");

推荐阅读