使用PDO

时间:2016-12-05 10:23:34

标签: php mysql pdo

我试图使用PHP / PDO将行插入MySQL表,来自两个来源,即:

  1. 另一个表(相同数据库)
  2. PHP
  3. 我填写的表格如下:

       Table Name : data_sink
    
    +-------+-----------+--------------+-----------+
    |  ID   |   data1   |    data2     |   data3   |
    +-------+-----------+--------------+-----------+
    |  1    |  text_1   |      aa      |        8  |
    |  2    |  text_2   |      bb      |        8  |
    |  3    |  text_3   |      cc      |        8  |
    |  4    |  text_4   |      dd      |        8  |
    |  5    |  text_5   |      ee      |        8  |
    |  6    |  text_6   |      ff      |        8  |
    +-------+-----------+--------------+-----------+
    

    在此, data1 data2 取自另一个表,但 data3 来自PHP代码。我使用以下查询从表中获取数据:

    $insert_rows = $db->prepare("INSERT INTO data_sink (data1, data2)
    SELECT username, usergroup FROM data_origins WHERE <condition>");
    

    我不确定如何在此查询中添加 data3 。我找到了一个解决方法,通过在我的origin表中添加另一列,并使用值“replaceme”填充所有行,然后运行查询,如下所示:

    $insert_rows = $db->prepare("INSERT INTO data_sink (data1, data2, data3)
    SELECT username, usergroup, temp_value FROM data_origins WHERE <condition>");
    

    然后我运行一个额外的查询,在data3设置为“replaceme”的地方更新表

        $update_rows = $db->prepare("UPDATE data_sink SET data3 = :data3 
    WHERE data3 = 'replaceme'");
    

    是否有一步解决此问题的方法,结合MySQL和PHP的输入? [注意:对于每批插入,所有行都共享data3的公共值]

1 个答案:

答案 0 :(得分:4)

可以像

一样简单
private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {                                            
    String lastName = txtlastName.getText(),
           firstName = txtlastName.getText(),
           ContactNumber = txtContactNumber.getText(),
           Email = txtEmail.getText();
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","username","pw");
        Statement stmt=con.createStatement();

        if(con!=null) {
            System.out.println("Success!");
        }
        else {
            System.out.println("Failed!");
        }

        String sql = "Insert Into Customer values(CUSTIDSEQ.NEXTVAL,+'"+lastName+"','"+firstName+"','"+ContactNumber+"','"+Email+"')";
        Statement st=con.createStatement();
        int n=st.executeUpdate(sql);
        //System.out.println(n+" "+"record inserted");

        if (n==1) {
            JOptionPane.showMessageDialog(this,"Record inserted");
        }
        else {
            JOptionPane.showMessageDialog(this,"Record not inserted");
        }

        con.close();

    } catch(Exception e) {System.out.println(e);
}

这当然假设您的$ data3对于所有要插入的行都是相同的。它也可以进行简单的算术运算或函数调用,以确保每行根据$ data3得到不同的值