gpt4 book ai didi

php - 具有多个值的广义选择查询

转载 作者:行者123 更新时间:2023-11-29 00:01:21 25 4
gpt4 key购买 nike

我正在尝试在 MySQL 中编写一个选择查询,它在前端表单中显示所有带有复选框的列名称,并允许用户选择在选择查询中使用的列名。我可以使用 $_POST 跨值发布,但我不确定如何将它们正确地放入我的查询字符串中,因为一些用户可能选择 1,而其他用户可能选择 3。

这是我目前所拥有的:

前端表单:

<form action="back.php" method="post">
<input type="checkbox" name="person" value="forename">Forename<br>
<input type="checkbox" name="person" value="surname">Surname<br>
<input type="checkbox" name="person" value="nationality">Nationality<br>
</form>

后端:

$person=$_POST["person"];

$query = "select" . $person . " from Actor WHERE nationality = British";

非常感谢您的帮助

最佳答案

你应该使用一个数组,这样 $_POST["person"] 就是一个数组:

<form action="back.php" method="post">
<input type="checkbox" name="person[]" value="forename">Forename<br>
<input type="checkbox" name="person[]" value="surname">Surname<br>
<input type="checkbox" name="person[]" value="nationality">Nationality<br>
</form>

然后在 php 端你需要验证你的输入。您无法自动转义或准备列名,因此您需要根据白名单检查每个元素。

类似于:

// your valid column names
$valid_column_names = array('forename', ...);

$validated_array = array();
foreach ($_POST["person"] as $value)
{
if (in_array($value, $valid_column_names))
{
$validated_array[] = $value;
}
}

然后您可以简单地分解经过验证的非空数组并在您的查询中使用它:

$query = "select `" . implode('`,`', $validated_array) . "` from Actor WHERE nationality = British";

请注意,我在 select 之后添加了一个空格(您需要)和反引号以引用字段名称(在您的示例中不是必需的,但在保留字等情况下是必需的)。

关于php - 具有多个值的广义选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29654979/

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