Php 在一行中插入两个数组

Php 在一行中插入两个数组,php,mysql,arrays,insert,Php,Mysql,Arrays,Insert,我有两个阵列: name - facebook,google,yahoo url - facebook.com,google.com,yahoo.com 在我的数据库中,我有一个表(tbl_网站)。 结构:id、站点名称、站点url 我想将这两个数组中的数据插入该表中的一行 例如: (第1行) (第2行) (第3行) 我该怎么做 任何帮助都将不胜感激。假设阵列之间存在1:1的直接匹配,您只需在其中一个阵列上循环,如下所示: foreach ($name as $key => $value

我有两个阵列:

name - facebook,google,yahoo
url - facebook.com,google.com,yahoo.com
在我的数据库中,我有一个表(tbl_网站)。
结构:id、站点名称、站点url

我想将这两个数组中的数据插入该表中的一行

例如: (第1行)

(第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\u query()
函数。但建议通过类似PDO的api使用准备好的语句。从数组中检索它们的过程是相同的

PDO版本(假定已在
$db
中建立连接):
上面的代码不包括任何错误检查。阅读有关使用PDO语句进行错误检查的示例。可以使用
try/catch
异常块或PHP警告来完成此操作。

假设数组之间存在直接的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\u query()
函数。但建议通过类似PDO的api使用准备好的语句。从数组中检索它们的过程是相同的

PDO版本(假定已在
$db
中建立连接): 上面的代码不包括任何错误检查。阅读有关使用PDO语句进行错误检查的示例。可以使用
try/catch
异常块或PHP警告执行此操作。

您可以执行一次查询(性能更好):

您可以执行一个查询(性能更好):


如果它来自三个不同的阵列呢?我需要做什么调整?@Michael,如果它来自三个不同的阵列,会怎么样?我需要做什么调整呢?@mackynyxzz我在上面又加了一点。如果有第三个数组,只需使用
$third\u数组[$key]
使用
$key
,因为数组键是最重要的部分。多谢了。这确实有效。我真的很感谢你的帮助如果它来自三个不同的阵列呢?我需要做什么调整?@Michael,如果它来自三个不同的阵列,会怎么样?我需要做什么调整呢?@mackynyxzz我在上面又加了一点。如果有第三个数组,只需使用
$third\u数组[$key]
使用
$key
,因为数组键是最重要的部分。多谢了。这确实有效。我真的很感谢你的帮助那是一行的对立面…那是3行。那是一行的对立面…那是3行。很抱歉,第二个数组的命名错误。现在应该可以了。很抱歉,第二个数组的命名错误。现在应该没事了。
id : 3
site_name : yahoo
site_url : yahoo.com
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')");
}
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));
}
$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));