我正在调用这个php文件。
$a = 'old';
$b = 'new';
if ($_POST['info-type'] == $a || $b)
{
$info = $_POST['info-type'];
$query = "SELECT * FROM `tld` WHERE type = '".$var."'";
}
$query = "SELECT * FROM `tld` ";
$result = mysqli_query($link,$query);
while($row = mysqli_fetch_assoc($result))
{
echo '<div>'.$row['something'].'</div>';
}
发布的数据为'all'
'new'
或'old'
。
如果我将数据作为new
或old
发送,则脚本按预期工作和输出。
如果发布的数据既不是新的也不是旧的,而是全部相反,它会失败并且不会显示任何错误或回复任何内容(我也通过开发工具进行监控)。
所以,我试过这个:
if ($_POST['info-type'] == $a || $b)
{
$info = $_POST['info-type'];
$var = "SELECT * FROM `tld` WHERE type = '".$var."'";
} elseif ($_POST['info-type'] == 'all')
{
$query = "SELECT * FROM `tld` ";
}
但剧本仍然失败。如果我完全删除IF
语句并使用没有WHERE
子句的查询,就像在elseif之后那样,它是否有效?
答案 0 :(得分:2)
这句话很奇怪:
if ($_POST['info-type'] == $a || $b) {
您可能打算:
if ($_POST['info-type'] === $a || $_POST['info-type'] === $b) {
此外,在这种情况下===
是好的,因为两个变量的类型都是string
。
$_POST['info-type'] == $a || $b
truethy (它是), $b
将始终为真。
答案 1 :(得分:1)
您需要将$_POST['info-type']
与$a
和$b
进行比较:
if ($_POST['info-type'] == $a || $_POST['info-type'] == $b)
您所拥有的问题是$_POST['info-type'] == $a || $b
看到$_POST['info-type'] == $a
是否为真或$b
是否为真。
由于$b
为真(它是非空字符串),if
条件将始终为真。
如果$_POST['info-type']
只能是all
new
或old
,那么以下内容会更优雅:
if ($_POST['info-type'] == 'all')
{
$query = "SELECT * FROM `tld` ";
}
else // info type will be old or new
{
$info = $_POST['info-type'];
$query = "SELECT * FROM `tld` WHERE type = '".$info."'";
}