0

我从以下 url 检索下面提到的部分代码:通过 php 数组将多行插入 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);

我创建的表包含三个字段-> 趋势、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'

我不明白出了什么问题。谁能帮我?

4

3 回答 3

1

您正在遍历输入数组的每个元素,然后尝试访问没有字符串的属性。(惊讶它甚至可以做任何事情)

尝试for循环。

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

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

于 2012-11-22T14:58:14.527 回答
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')


其次,您的数组不包含键trend,image_urlsku,因此您从中获得的值是该数组中每个字符串的第一个字母:

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

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

$array = array(0 => array("trend"     => "put", 
                          "image_url" => "something", 
                          "sku"       => "in here"), 
               1 => array("trend"     => "value1", 
                          "image_url" => "value2", 
                          "sku"       => "value3"),
               /* etc.. */
               );
于 2012-11-22T15:15:48.623 回答
0

您正在尝试使用 $row['trend'] 等访问关联数组(多维),而您没有它,如您的第一个 var_dump 所示。你的第一个 var_dump 应该是这样的:

$array = array(0 => array("trend"=> "value", "image_url" => "value, "sku" => "value"), 1=> array( .... ) and so on.
于 2012-11-22T15:01:48.657 回答