写在前面,这篇我应该会列为每次建立针对 WordPress 数据库读写项目时,必用的方法!
$wpdb
这个数据库存取方法,官方文件有写使用手册。
不过就是简单的「增删查改」 CRUD 四大方法介绍。 如果再细看「新增」的方法 insert( $table, $data, $format );
会发现除了基本指定 与外,还要指定 。 这实在有够麻烦,尤其是有些数据表有 20~30 个字段的话,那个型态就会写得很头痛。 想到就觉得不爽!
不过我相信有这困扰的人不只有我,果然 Google 一下发现有网友开源一个很棒的方法:
function wpdb_bulk_insert($table, $rows) { global $wpdb; // Extract column list from first row of data $columns = array_keys($rows[0]); asort($columns); $columnList = '`' . implode('`, `', $columns) . '`'; // Start building SQL, initialise data and placeholder arrays $sql = "INSERT INTO `$table` ($columnList) VALUES\n"; $placeholders = array(); $data = array(); // Build placeholders for each row, and add values to data array foreach ($rows as $row) { ksort($row); $rowPlaceholders = array(); foreach ($row as $key => $value) { $data[] = $value; $rowPlaceholders[] = is_numeric($value) ? '%d' : '%s'; } $placeholders[] = '(' . implode(', ', $rowPlaceholders) . ')'; } // Stitch all rows together $sql .= implode(",\n", $placeholders); // print_r($sql); // Run the query. Returns number of affected rows. return $wpdb->query($wpdb->prepare($sql, $data)); }
这个方法包装了 ,解决了要输入 的困扰(尽管只是判断是数字还是字串,但要自己一个一个列真的痛苦)。
使用方式除了带入第一个参数外,第二个参数是要带入阵列的数据列。 意味着这方法也帮你做到了批次新增,一举两得的好方法啊啊啊啊啊~~~~