使用 PDO 将多个 HTML 数据从数组多个输入插入到 db

时间:2021-07-07 07:33:55

标签: php mysql pdo

我有多个 FAQ 字段(问题和答案)并且必须将它们插入到 MySQL 数据库中。我正在使用 PDO。

HTML:

<input type="text" name="qns[]/>
   <textarea name="ans[]"></textarea><br>

PHP

    $qns=$_POST['qns'];
    $ans=$_POST['ans'];
    date_default_timezone_set('Asia/Kathmandu');
    $created= date('m/d/Y h:i:s a', time());

    foreach ($qns as $q){
        foreach ($ans as $a){
                $stmt=$pdo->prepare("INSERT INTO tbl_faq 
                            (faq_qn, faq_ans, faq_creator, faq_created, faq_updated)
                            VALUES
                            (?,?,?,?,?)");
                $stmt->bindValue(1, $q);
                $stmt->bindValue(2, $a);
                $stmt->bindValue(3, $_SESSION['id']);
                $stmt->bindValue(4, $created);
                $stmt->bindValue(5, $created);
                $stmt->execute();
        }
  }
  header("location:dashboard.php?page=faq/view.php");

当我将它插入数据库时​​,它会产生笛卡尔积。我知道循环出了点问题。但不知道如何修复它..

db screenshot

1 个答案:

答案 0 :(得分:3)

只使用一个循环并在$ans[]中传递问题循环的索引

foreach ($qns as $key => $q)
{
    $stmt = $pdo->prepare("INSERT INTO tbl_faq 
                (faq_qn, faq_ans, faq_creator, faq_created, faq_updated)
                VALUES
                (?,?,?,?,?)");

    $stmt->bindValue(1, $q);
    $stmt->bindValue(2, $ans[$key]);
    $stmt->bindValue(3, $_SESSION['id']);
    $stmt->bindValue(4, $created);
    $stmt->bindValue(5, $created);
    $stmt->execute();
}
相关问题