【发布时间】:2021-01-17 18:22:03
【问题描述】:
下面的代码与 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>
【问题讨论】:
-
您在搜索默认的 WP 表吗?你在寻找什么 - 例如发布内容?当我们不知道您的数据库包含什么以及您期望它返回什么时,我们很难知道为什么您的查询没有返回您期望的结果!
-
您好,谢谢。我正在搜索具有与上面发布的不同表名的自定义表。我试图为未来的人们提供这个通用性,而不是对我的问题过于具体。我正在以 INT 形式搜索 id 或以字符串形式搜索激活码。希望有帮助?
-
您的意思是您创建了自己的表吗?你会尝试搜索它吗?
-
我理解试图使问题笼统,但我们仍然需要足够的信息才能提供帮助:)。很难帮助调试 SQL 查询,因为它们完全取决于您的表结构和内容以及变量中的值。此外,您问题中的 2 个 SQL 查询也非常不同 - 一个返回与任何列名部分匹配的所有内容,另一个在特定列中查找特定值 - 所以我们甚至不知道您在搜索什么。我所能建议的就是开始获取一个直接在您的数据库中按预期运行的查询,然后从那里开始工作。
标签: php mysql wordpress search