gpt4 book ai didi

php - 如何使用单个发布的参数运行 BETWEEN 或 IN(SELECT parameter FROM table)类型的查询?

转载 作者:行者123 更新时间:2023-11-29 01:34:46 26 4
gpt4 key购买 nike

我有一个 bootstrap 4 表单将数据发布到 PHP 页面。其中一个变量是 $_POST['age'];

我想以这样的方式使用这个变量,当 $_POST['age'] 等于 NULL 时,$age = 'IN("SELECT age FROM profiles") 否则 $minage = $age-3 and $maxage = $age+3。我尝试了以下具有不同变体的代码,但它不适用于 $_POST['age'] = NULL

的情况
$age = $_POST['age'];
$minage = $age - 2;
$maxage = $age + 3;

if($age == NULL) {
$given_age = 'IN("SELECT age FROM profiles")';
}else {

$given_age = 'BETWEEN '. $minage.' AND '. $maxage;
}

echo $given_age;

html格式如下:

<div class="form-group">
<label for="age">Preferred Age Group</label>
<select class="form-control" name="age" id="age" required>
<option data-hidden="true" value="Null">No Preference</option>
<option data-hidden="true" value="20">18-22 Years</option>

</select>
</div>

$given_age 的结果将用于 MySQL 查询。

最佳答案

您应该从 value="Null" 中删除字符串 Null 并将其留空,即 value=""。如果您要传递整数,则该字符串在那里没有位置。

您可以使用 isset()找出该值是否在 HTML 表单中输入,并采取相应的行动:

if(isset($_POST['age'])) {
$age = (int) $_POST['age']; // make the value an integer
$minage = $age - 2;
$maxage = $age + 3;
$given_age = 'BETWEEN '. $minage.' AND '. $maxage;
}else {
$given_age = 'IN("SELECT age FROM profiles")';
}

如果您坚持将 Null 作为值,那么除了 isset 之外,您还应该检查它是否等于字符串:$_POST['age'] === 'Null'

您应该真正使用参数化的准备好的语句,而不是手动构建您的查询。它们由 PDO 提供或通过 MySQLi .永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data .

关于php - 如何使用单个发布的参数运行 BETWEEN 或 IN(SELECT parameter FROM table)类型的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56611061/

26 4 0