質問: wpdb->一度に複数のレコードを挿入 だから私はテーブル 'settings-table'を作成した後、それにレコードをいくつか追加したいと思います。これは私がやりたい方法であり、最良の方法ではないので、テーブルにもっとレコードを追加するので、もっと良い方法が必要です。実施例1 $wpdb->insert('settings-table', array('option_name' => 'name-1', 'option_value' => 'val-1', 'option_created'=> current_time('mysql'), 'option_edit' => current_time('mysql'), 'option_user' => 'user-1' )); $wpdb->insert('settings-table', array('option_name' => 'name-2', 'option_value' => 'val-2', 'option_created'=> current_time('mysql'), 'option_edit' => current_time('mysql'), 'option_user' => 'user-2' )); $wpdb->insert('settings-table', array('option_name' => 'name-1', 'option_value' => 'val-3', 'option_created'=> current_time('mysql'), 'option_edit' => current_time('mysql'), 'option_user' => 'user-3' 更新これはうまくいきます(他のより良い解決策は大歓迎です)$wpdb->query("insert into settings-table (`option_name`, `option_value`, `option_created`, `option_edit`, `option_user`) values ('name-1', 'val-1', current_time('mysql'), current_time('mysql'), 'user-1'), ('name-2', 'val-2', current_time('mysql'), current_time('mysql'), 'user-2'), ('name-3', 'val-3', current_time('mysql'), current_time('mysql'), 'user-3')")
回答: $ wpdb-> insert functionは、単一の関数呼び出しに挿入される複数のレコードをサポートしません。データをループして挿入するデータを準備してから、$ wpdb-> insertを使用してレコードを1つずつ挿入する必要があります。代わりに、以下のように挿入クエリを準備して、クエリを1回だけ実行できます。したがって、 100 recordsを挿入したい場合は、 100 insert query を使用する場合は $ wpdb-> insert を実行する必要があります。そして、次のようなコードを使用した場合、 1 insert query のみを実行する必要があります。それが役立つことを願っています。function do_insert($place_holders, $values) { global $wpdb; $query = "insert into settings-table (`option_name`, `option_value`, `option_created`, `option_edit`, `option_user`) values "; $query .= implode( ', ', $place_holders ); $sql = $wpdb->prepare( "$query ", $values ); if ( $wpdb->query( $sql ) ) { return true; } else { return false; } } $data_to_be_inserted = array( array( 'option_name' => 'name-1', 'option_value' => 'val-1', 'option_created'=> current_time('mysql'), 'option_edit' => current_time('mysql'), 'option_user' => 'user-1' ), array( 'option_name' => 'name-2', 'option_value' => 'val-2', 'option_created'=> current_time('mysql'), 'option_edit' => current_time('mysql'), 'option_user' => 'user-2' ), array( 'option_name' => 'name-1', 'option_value' => 'val-3', 'option_created'=> current_time('mysql'), 'option_edit' => current_time('mysql'), 'option_user' => 'user-3' )); $values = $place_holders = array(); if(count($data_to_be_inserted) > 0) { foreach($data_to_be_inserted as $data) { array_push( $values, $data['option_name'], $data['option_value'], $data['option_created'], $data['option_edit'], $data['option_user']); $place_holders[] = "( %s, %s, %s, %s, %s)"; } do_insert( $place_holders, $values ); }