为多个数组值创建单个insert语句

时间:2014-01-17 08:41:32

标签: php mysql sql arrays


我有一个关于如何实现我的用例的查询。我有一组数组,我想在数据库中插入,但现在我很困惑,我怎么能有效地做到这一点。我正在使用 PHP和MySQL .Below是用例:

$shareUrl = array();
$theInsertUrl = array();
$authKeyArray = array();

以上是处理完一些信息后得到的数组。现在我必须将它插入数据库,但不是一个接一个地做,我认为有一个单个插入会更好的解决方案(如果不是,请更正) 对于多个插入,我的SQL查询的values部分必须具有

 ($shareUrl[0],$theInsertUrl[0],$authKeyArray[0]),($shareUrl[1],$theInsertUrl[1],$authKeyArray[1]),...

我想过写一个for循环并创建一个像这样的多维数组

  for($i=0;$i<count_of_array;$i++){
        $multiArray[$i]['shareUrl'] = $shareUrl[0];
        $multiArray[$i]['theInsertUrl'] = $theInsertUrl[0];
        $multiArray[$i]['authKeyArray'] = $authKeyArray[0];
  }

但是在SQL查询的values部分中使用它仍然很繁琐,因为它接受这样的格式('val1','val2'),('val1','val2')。我需要有关如何实施它的建议?以上方法是正确的还是有更好的解决方案 OR 我应该使用单个插入语句吗?

1 个答案:

答案 0 :(得分:1)

将所有内容作为字符串放入数组中,然后内爆

$data= array();
for ($i = 0; $i < $size; $i++) {
    $data[] = "('".$mysqli->real_escape_string($array1[$i])."','".$mysqli->real_escape_string($array2[$i])."')";
}
if (sizeof($data) > 0) {
    $query = "INSERT INTO table (value1,value2) VALUES ".implode(",",$data).";");
    $mysqli->real_query($query)
}