【问题标题】:Insert query foreach loop trouble插入查询foreach循环麻烦
【发布时间】:2014-05-10 11:07:39
【问题描述】:

不用担心mysql贬值,也不用担心sql注入,个人项目而已

我的代码:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { // check if the user submits data (POST) or just loads the page (GET)
$error = false;
$required = array('uexam_id', 'usubject', 'uexam_date'); //VALIDATION: first check all required fields are not empty.


foreach($required as $field) {
    if (!isset($_POST[$field]) || empty($_POST[$field])) {
        $error = true;
        break;
    }
}
//if a field was empty, show error
if ($error) {
    die("All fields required!!! <a href='examisud.php'> Back to PHP Form </a>");
} else {
    $InsertQuery = "INSERT INTO Exam (exam_id, subject, exam_date) VALUES ('".mysql_real_escape_string($_POST["uexam_id"], $con)."','".mysql_real_escape_string($_POST["usubject"], $con)."','".mysql_real_escape_string($_POST["uexam_date"], $con)."')";
    $result = mysql_query($InsertQuery, $con) or die('query Failure:'. mysql_error());
}
}

我在这里有一个肤浅/审美问题。 插入/更新/删除查询工作正常,但是这个 foreach 循环似乎给我带来了麻烦。 每次我导航到此页面(examisud)时,我都会收到错误“所有字段必填”。除了,实际上没有发生任何错误,它只是显示消息。出于某种原因,这是页面加载。 此外,每当我更新或删除时,错误消息都会再次显示,但字段中的值会像预期的那样更新/删除。 这很奇怪,我希望有人能指出我如何阻止这个循环只在我需要它时出现,也就是当一个字段留空时??? 非常感谢任何帮助!

【问题讨论】:

  • 尝试将if ($_SERVER['REQUEST_METHOD'] == 'POST') {更改为if(!empty($_POST)) {
  • @ICanHasCheezburger 不,那没用,不幸的是完全相同的事情:/
  • 您的意思是您在页面 loadreload 上看到错误?如果在 load 上,你能粘贴完整的页面代码吗?
  • 您确定这些值是否被插入到数据库中,因为我觉得您的查询中存在问题,即在 VALUES 之后的每个括号中都有 $con,这是不需要的。
  • 我的值被放入数据库中。我在另一个窗口中打开了 phpmyadmin 并在每次查询后刷新以检查它,它工作得很好。

标签: php mysql loops foreach insert


【解决方案1】:

试试这个:

每次页面加载时,您的条件都会成立。

删除这个:if ($_SERVER['REQUEST_METHOD'] == 'POST')

使用这个:if (!empty($_POST))

【讨论】:

    【解决方案2】:

    只需调试它以查看哪个字段使您的 $error 等于 true:

    foreach($required as $field) {
        if (!isset($_POST[$field]) || empty($_POST[$field])) {
            $error = true;
            echo 'Im an empty field that causes you trouble: ' . $field;
            break;
        }
    }
    

    【讨论】:

    • 这是在屏幕上回显的内容:我是一个给您带来麻烦的空字段:uexam_idAll fields required!!!返回 PHP 表单 所以 uexam_id 不知何故给我带来了麻烦???
    • 顺便说一句,页面加载也是如此。
    • 那么这个字段:uexam_id 是空的。
    • @user3473793 您是否在浏览器中打开此页面?还是您是从另一个页面的形式发送到此页面的?
    • 请把你的第一个如果从这个:if ($_SERVER['REQUEST_METHOD'] == 'POST')改成这个:if (isset($_POST) &amp;&amp; !empty($_POST)) {
    猜你喜欢
    • 2023-03-13
    • 2017-05-03
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多