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);

作成したテーブルには、trend、image_url、sku の 3 つのフィールドが含まれています。

最初の 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')


次に、配列にはキーtrendimage_urlおよびが含まれていないskuため、それらから取得する値は、その配列内の各文字列の最初の文字になります。

  • (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.. */
               );
于 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 に答える