0

PHP を使用して MySQL に配列を挿入しようとしています。ここで与えられた優れたアドバイスに従って implode コマンドを使用したところ、1 つのアレイではうまく機能しましたが、これは死にかけているようです。この配列は他の配列とは少し異なりますが、違いを説明する方法がわかりません。

これが私のコードです:

    $sql = array(); 
foreach( $ride_detail as $row ) {
    $sql[] = '('.$row['id'].', "'.mysql_real_escape_string($row['name']).'",
  "'.$row['version'].'")';
}
mysql_query('INSERT IGNORE INTO ride (ride_id, name, version) VALUES '.implode(',', $sql));

私は何度も何度もこのメッセージを受け取っています。

Warning: Illegal string offset 'id' in ride_details.php on line 60

Warning: Illegal string offset 'name' in ride_details.php on line 60

Warning: Illegal string offset 'version' in ride_details.php on line 61

私の配列の内容(print_rを使用)は次のとおりです。

配列 ( [id] => 21570117 [name] => 仕事帰りの夜間走行 [start_date_local] => 1347302039 [elapsed_time] => 53:56 [moving_time] => 52:04 [distance] => 12.6 >>[average_speed ] => 14.5 [標高ゲイン] => 474 [場所] => コロラド州エングルウッド [start_latlng] => 配列 ([0] => 39.547792011872 [1] => -104.86300536431 ) [end_latlng] => 配列 ([0] = > 39.655485888943 [1] => -104.88656991161 ) [バージョン] => 1355428869 [アスリート] => 配列 ( >>[id] => 832001 [名前] => Bob Kratchet [ユーザー名] => bob_kratchet ) [バイク] => Array ( [id] => 281303 [name] => Giant Allegre commuter ) [maximum_speed] => 29.3 [calories] => 372 >[average_power] => 107 [commute] => 1 )

私は完全な初心者です...

4

2 に答える 2

1

your$ride_detailは1つの配列で$rowあるため21570117、(integer)、Night ride home from work(string)などを1つずつ実行します。次に、コードidは各要素のキー、次にキーなどを取得しようとしname[expletive]トンのエラーメッセージを生成します。

$ride_detail配列の配列にするつもりであるか、実際にはforeachループがまったく必要ないようです。

于 2013-01-16T00:12:46.727 に答える
0

これを試して

   foreach( $ride_detail as $row ) {
     $sql = array( $row['id'], mysql_real_escape_string($row['name']), $row['version'])  ;

         }
  mysql_query('INSERT IGNORE INTO ride (ride_id, name, version) VALUES  ($sql[0] ,$sql[1] , $sql[2] ) ');
于 2013-01-16T00:34:40.257 に答える