我有两个数组:
name - facebook,google,yahoo
url - facebook.com,google.com,yahoo.com
在我的数据库中,我有一张桌子(tbl_websites) 结构:id,site_name,site_url
我想将这两个数组中的数据插入该表中的一行。
例如: (第1行)
id : 1
site_name : facebook
site_url : facebook.com
(第2行)
id : 2
site_name : google
site_url : google.com
(第3行)
id : 3
site_name : yahoo
site_url : yahoo.com
我该怎么做?
任何帮助将不胜感激。
答案 0 :(得分:3)
假设数组之间存在直接的1:1匹配,您可以简单地循环其中一个,如:
foreach ($name as $key => $value) {
$name_value = mysql_real_escape_string($value);
$url_value = mysql_real_escape_string($url[$key]);
// Addendum: If there was a third array, just use `$key` as the array key
// same as done with $url[$key]
$thrid_value = mysql_real_escape_string($third_arr[$key]);
$result = mysql_query("INSERT INTO tbl_websites (site_name, site_url, third_value) VALUES ('$name_value', '$url_value', '$third_value')");
}
这假设id
是自动增量值。为简洁起见,我在这里使用了mysql_query()
函数。但是建议使用像PDO这样的API来准备语句。从数组中检索它们的过程是一样的。
$db
中建立连接):foreach ($name as $key => $value) {
$stmt = $db->prepare("INSERT INTO tbl_websites (site_name, site_url) VALUES (:name, :url)");
$stmt->execute(array(':name' => $name_value, ':url' => $url_value));
}
上面的代码不包含任何错误检查。有关使用PDO语句进行错误检查的示例,请阅读PDO manual。可以使用try/catch
异常块或PHP警告来完成。
答案 1 :(得分:1)
你可以做一个查询(更好的表现):
$values = array_map(function($name, $url){
return "('$name', '$url')";
}, array_map('mysql_real_escape_string', $name), array_map('mysql_real_escape_string', $url));
mysql_query("INSERT INTO `tbl_websites` (`site_name`, `site_url`) VALUES " . implode(' ', $values));