目前我有一个数组,当通过print_r()输出时,它看起来像下面这样;
Array
(
[0] => Array
(
[R_ID] => 32
[email] => a@a.com
[name] => Bob
)
[1] => Array
(
[R_ID] => 32
[email] => b@b.com
[name] => Dan
)
[2] => Array
(
[R_ID] => 32
[email] => c@c.com
[name] => Paul
)
[3] => Array
(
[R_ID] => 35
[email] => d@d.com
[name] => Mike
)
)
我想将这些数据插入到一个表中,每个元素值都属于它各自的字段。
目前,我的php代码如下所示
if(is_array($EMailArr)){
foreach($EMailArr as $R_ID => $email => $name){
$sql = "INSERT INTO email_list (R_ID, EMAIL, NAME) values ('$R_ID', '$email', '$name')";
mysql_query($sql) or exit(mysql_error());
}
}
*注意: R_ID不是本表的主键。*
有人能帮我理解一下我该如何处理这种情况吗?感谢您的阅读和帮助!
致以问候。
发布于 2013-02-22 06:21:35
我会避免对每个条目进行查询。
if(is_array($EMailArr)){
$sql = "INSERT INTO email_list (R_ID, EMAIL, NAME) values ";
$valuesArr = array();
foreach($EMailArr as $row){
$R_ID = (int) $row['R_ID'];
$email = mysql_real_escape_string( $row['email'] );
$name = mysql_real_escape_string( $row['name'] );
$valuesArr[] = "('$R_ID', '$email', '$name')";
}
$sql .= implode(',', $valuesArr);
mysql_query($sql) or exit(mysql_error());
}
发布于 2013-02-22 06:14:51
if(is_array($EMailArr)){
foreach($EMailArr as $key => $value){
$R_ID = (int) $value['R_ID'];
$email = mysql_real_escape_string( $value['email'] );
$name = mysql_real_escape_string( $value['name'] );
$sql = "INSERT INTO email_list (R_ID, EMAIL, NAME) values ('$R_ID', '$email', '$name')";
mysql_query($sql) or exit(mysql_error());
}
}
使用PDO的更好的示例解决方案:
$q = $sql->prepare("INSERT INTO `email_list`
SET `R_ID` = ?, `EMAIL` = ?, `NAME` = ?");
foreach($EMailArr as $value){
$q ->execute( array( $value['R_ID'], $value['email'], $value['name'] ));
}
发布于 2018-06-05 19:00:30
我有一个帮助插入数组到MySQL数据库的PHP库。通过使用它,您可以创建、更新和删除。您的数组键值应与表列的值相同。只需为create操作使用单行代码
DB::create($db, 'YOUR_TABLE_NAME', $dataArray);
其中$db是您的数据库连接。
类似地,您可以使用它进行更新和删除。Select操作即将可用。Github下载链接:https://github.com/pairavanvvl/crud
https://stackoverflow.com/questions/15013211
复制相似问题