我试图使用PHP / PDO将行插入MySQL表,来自两个来源,即:
我填写的表格如下:
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的公共值]
答案 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得到不同的值