【问题标题】:Code still running despite if statement?尽管有 if 语句,代码仍在运行?
【发布时间】:2014-03-29 21:10:06
【问题描述】:
                echo '<form method="post">
                                <input type="text" name="selector3">
                                <input type="submit" name="submit3" value="submit3">
                                  </form>';

                                  if (!empty($_POST['selector3'])) {

                        $eventsquery = mysql_query("
                            SELECT studentid, statusid, timestamp, elapsed
                            FROM events
                            WHERE studentid = '$name'
                            AND statusid = '$_POST['selector3']'
                            ORDER BY timestamp DESC
                            LIMIT 1
                            ")
                            or die("Error querying database ".mysql_error()); }

即使没有设置选择器 3,它也会运行 if 语句中的代码!

【问题讨论】:

  • var_dump($_POST['selector3']); 输出什么?
  • @Amal Murali 它输出未定义的索引

标签: php mysql forms if-statement input


【解决方案1】:

您可以尝试使用 isset 而不是 empty。

if (isset($_POST["selector3"])) {
    ...
}

【讨论】:

  • 那一定意味着$_POST["selector3"]有一个值。所以它并不像你想象的那么空。你发帖是为了进入这个页面,你可以在发帖前检查 selector3 的值吗?
【解决方案2】:

代码在这里按预期工作。即当 $_POST['selector3'] 为空时,查询不会被执行。

但是,查询中存在语法错误。它被 $_POST['selector3'] 弄糊涂了。

<?php
var_dump($_POST);
$name = '';
echo '<form method="post">
                                <input type="text" name="selector3">
                                <input type="submit" name="submit3" value="submit3">
                                  </form>';

                                  if (!empty($_POST['selector3'])) {

                        $eventsquery = mysql_query("
                            SELECT studentid, statusid, timestamp, elapsed
                            FROM events
                            WHERE studentid = '$name'
                            AND statusid = '{$_POST['selector3']}'
                            ORDER BY timestamp DESC
                            LIMIT 1
                            ")
                            or die("Error querying database ".mysql_error()); }
var_dump($_POST);
?>

【讨论】:

    最近更新 更多