gpt4 book ai didi

php - 在数据库中搜索多个用户输入的文本字段

转载 作者:行者123 更新时间:2023-11-29 22:35:06 24 4
gpt4 key购买 nike

这是我们迄今为止尝试过的代码。实际上我们要做的是用户在他选择的文本框中输入数据。我们希望 php 查询能够组合搜索结果并提供输出。

    $query=array();
$query[] = empty($_POST['keyword_s_dec']) ? : 'cand_desc='.$_POST['keyword_s_dec'];
$query[] = empty($_POST['keyword_s_location']) ? : 'cand_location='.$_POST['keyword_s_location'];
$results = implode('AND', $query);

$sql = "SELECT * FROM candidate where '".$results."'";

$result = mysql_query($sql) or die(mysql_error());

其中keyword_s_dec和keyword_s_location是我们的文本域ID; cand_desc 和 cand_location 是数据库列。

我们也在尝试 SQL 注入(inject),如何才能实现这一目标?

最佳答案

我对您的代码做了一些调整:

$query = array();

if (!empty($_POST['keyword_s_dec'])) $query[] = "cand_desc = '".$_POST['keyword_s_dec']."'";
if (!empty($_POST['keyword_s_location'])) $query[] = "cand_location = '".$_POST['keyword_s_location']."'";

$condition = implode(' AND ', $query);

$sql = "SELECT * FROM candidate WHERE $condition";

$result = mysql_query($sql) or die(mysql_error());

这将构建一个有效的查询:

SELECT * FROM candidate WHERE cand_desc = 'test1' AND cand_location = 'test2'

您的主要问题是您没有在 AND 字符串周围插入空格,也没有为 WHERE 子句中的值插入单引号,但我还删除了条件 ?: 运算符,因为它使代码的可读性较差。

请注意,我只修复了您编写的代码。如果没有设置任何 POST 变量,它将不起作用(因为 SQL 字符串将有一个没有任何内容的 WHERE 子句),并且您绝对应该使用 mysql_real_escape_string()读取 POST 变量以防止 SQL 注入(inject)。

关于php - 在数据库中搜索多个用户输入的文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29575331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com