/** * 批量插入 * * @param string $table 要插入的表名 * @param array $inserts 要插入的指数据,数据的key值最好为字段名。 * @return boolen */ function multiInsert($table, $inserts) { //取出第一个要保存的数据的key值来拼field $fields = "`". implode("`,`", array_keys(current($inserts)))."`"; //拼接要保存的值 foreach($inserts as $insert) { $insert = array_map('addslashes', $insert); //使用addslashes,是避免在保存的值中出现' "这些会影响sql语句的情况。一般情况下,mysql设置为:转义后的值在保存到数据库后会自动反转义。 $values[] = "/"". implode("/",/"", $insert)."/""; //拼接数据 } $valueStr = implode("),(", $values); //把数组数据拼接成字符串 //注意要插入的数据可能已经存在 $sql = "INSERT IGNORE INTO $table ($fields) VALUES ($valueStr)"; //重点是使用IGNORE,即遇到失败的插入直接跳过,如,纪录己存在 return mysqlInsert($sql); //自定义的一个数据插入方法 } |