【问题标题】:Dynamic insert into DB动态插入数据库
【发布时间】:2018-07-25 07:18:01
【问题描述】:

我正在创建一个简单的网络应用程序,它是一个用于在 DB (Postgres) 中插入数据的表单。

我有这张桌子:

prenotazione (id,nome_rich,cogn_rich,email_rich,oggetto_rich)

interni (id,nome_int,cogn_int,email_int)

esterni (id,nome_est,cogn_est,email_est)

现在关于“interni”和“esterni”表,用户应该选择要插入多少数据,所以我实现了一个动态表单:

**index.php

<div id="start">
    <div id="first">
      Nome:<input type="text" name="iname[]" size="20"><br> 
      Cognome: <input type="text" name="isurname[]" size="20"><br> 
      Email: <input type="email" name="iemail[]" size="20"><br>
      <br>
    </div>
  </div>
  <br>
  <b> Numero partecipanti interni:</b>
  <input type="text" id="n1" value="1"><br>
  <button><a href="#" id="add1">Aggiungi partecipante</a></button>
  </div>

**input.php

$name = $_POST['name'];
$surname = $_POST['surname'];
$email = $_POST['email'];
$testo = $_POST['testo'];

//inserting data order
$query1 = "INSERT INTO prenotazione (id,nome_rich, cogn_rich, email_rich,oggetto_rich) VALUES (1,'$name','$surname', '$email','$testo')";
//execute the query here
$result = pg_query($conn, $query1 ); //if you are using pg_query and $conn is the connection resource
// Interni
$query = "";
if( !empty( $_POST['iname'] ) ) {

    foreach( $_POST['iname'] as $key => $iname ) {

        $isurname = empty( $_POST[$key]['isurname'] ) ? NULL : $_POST[$key]['isurname'];
        $iemail = empty( $_POST[$key]['iemail'] ) ? NULL : $_POST[$key]['iemail'];
        $query .= " ( '$iname', '$isurname', '$iemail' ) ";
    }
}
if( !empty( $query ) ) {

    $query2 = "INSERT INTO interni (nome_int, cogn_int, email_int) VALUES ".$query;
    $result = pg_query($conn, $query2 );

问题是当他们尝试将数据插入“interni”并且数据不止一个时,他们不能并且我收到错误消息。 (基本上,当他们尝试插入多个表时,“interni”表是空的)。 我该如何解决这个问题? 谢谢大家

【问题讨论】:

  • 您遇到的错误是什么?
  • 值之间缺少逗号。
  • @KMS 基本上我不能插入多个数据,因为它们会导致连接。我收到错误: $result = pg_query($conn, $query2 ); //如果你使用 pg_query 并且 $conn 是连接资源
  • @ŁukaszKamiński 正是我认为这是问题所在,但我发现很难理解如何解决这个问题。

标签: php database postgresql


【解决方案1】:

您在 VALUES 之间缺少逗号。

这是你正在执行的:INSERT INTO table VALUES (stuff) (stuff2) (stuff3)

正确的是:INSERT INTO table VALUES (stuff), (stuff2), (stuff3)

修复:

    $iemail = empty( $_POST[$key]['iemail'] ) ? NULL : $_POST[$key]['iemail'];
    if($query != "") {
      $query .= ",";
    }
    $query .= " ( '$iname', '$isurname', '$iemail' ) ";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    相关资源
    最近更新 更多