gpt4 book ai didi

PHP mysql 使用变量进行搜索

转载 作者:行者123 更新时间:2023-11-29 12:48:08 25 4
gpt4 key购买 nike

我正在尝试使用变量来查询数据库,以检测所选列以及搜索词。

为了简单起见,我删除了数据库连接错误处理代码。问题代码为:

$find = mysqli_real_escape_string($dbc, test_input($_POST["find"]));
$field = $_POST["field"];

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE '$field' = '$find'");
//Results
while($result = mysqli_fetch_array($data)) {

echo "Result 1" . $result['number'];
echo "<br>";
echo "<br>";
echo "Result 2" . $result['description'];
echo "<br>";
echo "<br>";
echo "Result 3" . $result['contact'];
echo "<br>";
echo "<br>";
echo "Result 4" . $result['assignee'];
echo "<br>";
echo "<br>";
echo "Result 5" . $result['priority'];
echo "<br>";
echo "<br>";

}

$anymatches = mysqli_num_rows($data);

if ($anymatches == 0) {
echo "Sorry, but we can not find an entry to match your query<br><br>";
}

我在文本框 ($find) 中输入一个术语,然后从下拉菜单 ($field) 中选择要搜索的内容,例如我选择受让人。

即使我知道它在数据库中,我仍然返回“抱歉,但我们找不到与您的查询匹配的条目”。

但是,如果我将 MYSQL 查询中的 $field 变量更改为实际的列名称。示例:

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE assignee = '$find'"); 

它返回正确的数据。我什至在执行过程中回显了 $field 变量,以确保它保存了正确的选择,而且确实如此。有什么想法吗?

谢谢

最佳答案

问题是您用引号 (') 而不是反引号将字段名称引起来。

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE '$field' = '$find'");

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE `$field` = '$find'");

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE $field = '$find'");

您当前的代码本质上是尝试查找一个字符串与另一个字符串匹配的行,但这永远不会是真的。

关于PHP mysql 使用变量进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25155348/

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