0

我有两个数组:

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

我怎么做?

任何帮助将不胜感激。

4

2 回答 2

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 使用准备好的语句。从数组中检索它们的过程是相同的。

PDO 版本(假设已在 中建立连接$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 语句进行错误检查的示例。它可以通过try/catch异常块或 PHP 警告来完成。

于 2012-04-10T02:42:23.667 回答
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));
于 2012-04-10T02:49:08.467 回答