在表上添加多行。 PHP,MySQL的

时间:2012-11-22 14:45:57

标签: php

我从以下网址检索下面提到的部分代码:insert multiple rows via a php array into mysql 但是我遇到了问题。我的代码如下:

//create an array
$array = array();

//add some values

//1st var_dump($array);
var_dump($array);

$msql = array(); 
foreach( $array as $row ) {
    $msql[] = '('.$row['trend'].', '.$row['image_url'].','.$row['sku'].')';
}

 var_dump($msql);   



 $insertData = "INSERT INTO Data_Info (trend, image_url,sku) VALUES ".implode(',', $msql);
 mysql_query($insertData) or die(mysql_error());

 mysql_close($conn);

我创建的表包含三个字段 - > trend,image_url,sku。

第一个var_dump的结果:

array(6) { 
   [0]=> string(7) "mytrend" 
   [1]=> string(70) "http://re.n.o.coat.png" 
   [2]=> string(12) "militarycoat" 
   [3]=> string(7) "mytrend" 
   [4]=> string(73) "http://re.n.o.padded.png" 
   [5]=> string(15) "signaturepadded" 
} 

2n var_dump的结果:

array(6) {
   [0]=> string(8) "(m, m,m)" 
   [1]=> string(8) "(h, h,h)" 
   [2]=> string(8) "(m, m,m)" 
   [3]=> string(8) "(m, m,m)" 
   [4]=> string(8) "(h, h,h)" 
   [5]=> string(8) "(s, s,s)" 
} 
Unknown column 'm' in 'field list'

我无法理解出了什么问题。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

您正在循环输入数组的每个元素,然后尝试访问没有的字符串的属性。 (甚至做任何事都感到惊讶)

尝试for循环。

for($i = 0; $i < count($array); $i+=3)
{
    $msql[] = '('.$array[$i].', '.$array[$i+1].','.$array[$i+2].')';
}

或以不同方式定义您的$数组以适应您的循环。

答案 1 :(得分:0)

你正试图用$ row ['trend']等来访问数组的关联数组(多维)...而你没有它,如你的第一个var_dump所示。你的第一个var_dump应如下所示:

$array = array(0 => array("trend"=> "value", "image_url" => "value, "sku" => "value"), 1=> array( .... ) and so on.

答案 2 :(得分:0)

Unknown column 'm' in 'field list'由以下人员生成:

$insertData = "INSERT INTO Data_Info (trend, image_url,sku) VALUES ".implode(',', $msql);

必须将VALUES封装在括号中。数据也应该用引号括起来。现在是:

VALUES (m, m, m),(h, h, h)

应该是:

VALUES (('m', 'm', 'm'),('h', 'h', 'h'))
       ^                               ^
       |_________encapsulated__________|

否则,数据将被视为列(Unknown column 'm' in 'field list'


其次,您的数组不包含键trendimage_urlsku,因此您从中获取的值是该数组中每个字符串的第一个字母:< / p>

  • (m, m,m)来自"mytrend"
  • 的第一个字母
  • (h, h,h)来自"http://re.n.o.coat.png"

所以像这样创建你的数组:

$array = array(0 => array("trend"     => "put", 
                          "image_url" => "something", 
                          "sku"       => "in here"), 
               1 => array("trend"     => "value1", 
                          "image_url" => "value2", 
                          "sku"       => "value3"),
               /* etc.. */
               );