作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我是一名优秀的程序员,十分优秀!