【问题标题】:Insert into database table with if else statement in php [duplicate]在php中使用if else语句插入数据库表[重复]
【发布时间】:2017-03-29 14:52:27
【问题描述】:

可能是我没问好 假设我有两种形式

<form action="reg.php" method="post" enctype="multipart/form-data">
    <input type="text" name="reg_as" id="export" value="exporter">
    <input type="submit" name="reg">
</form>

<form action="reg.php" method="post" enctype="multipart/form-data">
    <input type="text" name="reg_as" id="import" value="importer">
    <input type="submit" name="reg">
</form>

如何使用 if else 条件插入多个表 reg.php

$reg_as = strip_tags(@$_POST['reg_as']);
$reg = strip_tags(@$_POST['reg']);
$exporter = "exporter";
$importer = "importer";

if ($reg)
{
    if ($reg_as == $exporter)
                    {
                        $sql =<<<EOF
INSERT INTO exporter (reg_as) 
VALUES ('$reg_as');
EOF;

                        $stmt = $db->exec($sql);

                        if (!$stmt)
                        {
                            echo "<script>alert('There was an error some where!.. Please try again')</script>";
                        }
                        else
                        {
                            header("Location: index.php");
                        }
                        if ($reg_as == $importer) {
                            $sql = <<<EOF
INSERT INTO importer (reg_as) 
VALUES ('$reg_as');
EOF;
                        }

                        $stmt = $db->exec($sql);

                        if (!$stmt)
                        {
                            echo "<script>alert('There was an error some where!.. Please try again')</script>";
                        }
                        else
                        {
                            header("Location: index.php");
                        }

}

这里的问题是,数据没有插入数据库。请问有什么问题吗?

【问题讨论】:

  • 您分配的是=,而不是比较==
  • "I am aware of the security risk of the php code so please ignore that part" - 如果那部分是导致问题的原因怎么办?当您的代码无法以某种方式运行时,向我们保证一切正常且无需更正并不是诊断和解决问题的特别有效的方法。
  • 这个人 Hubert Blaine Wolfeschlegelsteinhausenbergerdorff 永远无法在您的系统上注册

标签: php mysql database forms


【解决方案1】:

这是一个赋值,表达式返回bool(true)

if ($reg_as = "Exporter")

要比较两个值,您应该使用两个等号:

if ($reg_as == "Exporter")

也许你可以这样做:

<form action="reg.php" method="post" enctype="multipart/form-data">
    <select name="type" id="type">
        <option value="importer">Importer</option>
        <option value="exporter">Exporter</option>
    </select>

    <input type="text" name="reg_as" placeholder="Insert your data here..." />

    <input type="submit" name="submit" value="Save">
</form>

<?php

if (!empty($_POST['submit'])) {
    $type = in_array($_POST['type'], ['exporter', 'importer']) ? $_POST['type'] : false;
    $value = $_POST['reg_as'];

    switch ($type) {
        case 'exporter':
            $query = "INSERT INTO exporter (reg_as) VALUES (:reg_as)";
            break;
        case 'importer':
            $query = "INSERT INTO importer (reg_as) VALUES (:reg_as)";
            break;
        default:
            throw new Exception('Handle your error here!');
            break;
    }

    $statement = $db->prepare($query);
    $insert = $statement->execute([':reg_as' => $value]);

    if ($insert) {
        header("Location: index.php");
    } else {
        echo "<script>alert('There was an error some where!.. Please try again')</script>";
    }
}

【讨论】:

  • 你说得对。这是问题的一部分。我编辑了我的问题,请帮忙,因为数据没有插入到数据库中
  • 您的两个字段都命名为 reg_as,但在您的代码中,您请求的是 reg_asreg
  • 是的。 reg 是提交输入(用于提交表单)
  • @TegaOke 我已经编辑了答案。
猜你喜欢
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
相关资源
最近更新 更多