将三个数组合并为一个用于插入mysql

时间:2014-06-25 10:06:02

标签: php mysql sql arrays

我的智慧结束了。我有一个页面应该将几个数组插入数据库。我正在尝试组合数组并插入它们。我没有成功地将它们结合起来。 也许他们甚至不需要组合,只需插入一个空数据库。 它们都有相同的键,我将列出3:

我有:

$reference_array contains:
(
[2815] => ref1
[2818] => ref2
[2835] => ref3
)

$ean_array contains:
(
[2815] => 6876876873
[2818] => 0097789783
[2835] => 0907678989
)

$price_array contains:
Array 
(
[2815] => 63.83
[2818] => 80.92
[2835] => 23.05
)

使用一个数组我使用explode()和插入Mysql的正确格式,但我不能像下面那样插入多个数组。我尝试插入3个不同的查询,但学会了数据附加在数据库中。

$sql = "INSERT INTO data (Reference,EAN,Price) VALUES (the-reference-array,the-ean-array,theprice-array,etc,etc )";

感觉看起来很简单,可能是。但此刻不适合我: - /

我使用过的东西:

$merged = array_combine(array_keys($reference),$reference);
$merged1 = $merged + array_combine($merged,$ean_array);

如何组合这些数组和/或进行插入查询,以便所有数组都“对齐”以使用相同的键?所有数组总是具有相同的长度。

2 个答案:

答案 0 :(得分:2)

假设所有三个数组总是具有完全相同的键,您可以执行以下操作:

foreach (array_keys($price_array) as $key) {
    $reference = $reference_array[$key];
    $ean = $ean_array[$key];
    $price = $price_array[$key];

    mysql_query("INSERT INTO data (Reference, EAN, Price) VALUES ('$reference', '$ean', $price)");
}

最好使用prepared statement。这看起来像

$mysqli = new mysqli("example.com", "user", "password", "database");
$statement = $mysqli->prepare("INSERT INTO data (Reference, EAN, Price) VALUES (?, ?, ?)")

foreach (array_keys($price_array) as $key) {
    $statement->bind_param("ssd", $reference_array[$key], $ean_array[$key], $price_array[$key]);
    $statement->execute()
}

已编辑:合并了三个bind_param来电。谢谢,@ kingkero!

答案 1 :(得分:0)

你可以试试这个:

$sql = "INSERT INTO data (Reference,EAN,Price) VALUES ";
$comma = "";
foreach(array_keys($reference_array) as $key) {
  $sql.= $comma."('".$reference_array[$key]."', '".$ean_array[$key]."', '".$price_array[$key]."')";
  $comma = ", ";
}