发布
社区首页 >问答首页 >Wordpress $wpdb。插入多条记录

Wordpress $wpdb。插入多条记录
EN

Stack Overflow用户
提问于 2012-09-12 00:13:11
回答 6查看 33K关注 0票数 32

有没有办法在Wordpress中用$wpdb->insert

$wpdb->query($wpdb->prepare))

代码语言:javascript
代码运行次数:0
复制
INSERT into TABLE (column1, column2, column3) 
VALUES
('value1', 'value2', 'value3'),
('otherval1', 'otherval2', 'otherval3'),
('anotherval1', 'anotherval2', 'anotherval3')

...etc

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-09-12 01:22:38

好了,我想通了!

设置实际值和占位符的数组

代码语言:javascript
代码运行次数:0
复制
$values = array();
$place_holders = array();

初始查询:

代码语言:javascript
代码运行次数:0
复制
$query = "INSERT INTO orders (order_id, product_id, quantity) VALUES ";

然后循环遍历要添加的值,并将它们插入到适当的数组中:

代码语言:javascript
代码运行次数:0
复制
foreach ( $_POST as $key => $value ) {
     array_push( $values, $value, $order_id );
     $place_holders[] = "('%d', '%d')" /* In my case, i know they will always be integers */
}

然后将这些位添加到初始查询中:

代码语言:javascript
代码运行次数:0
复制
$query .= implode( ', ', $place_holders );
$wpdb->query( $wpdb->prepare( "$query ", $values ) );
票数 76
EN

Stack Overflow用户

发布于 2015-02-25 02:39:00

您还可以使用此方法构建查询:

代码语言:javascript
代码运行次数:0
复制
$values = array();

// We're preparing each DB item on it's own. Makes the code cleaner.
foreach ( $items as $key => $value ) {
    $values[] = $wpdb->prepare( "(%d,%d)", $key, $value );
}

$query = "INSERT INTO orders (order_id, product_id, quantity) VALUES ";
$query .= implode( ",\n", $values );
票数 19
EN

Stack Overflow用户

发布于 2015-11-20 20:19:08

我遇到了这个问题,并决定使用accepted构建一个更好的函数:

代码语言:javascript
代码运行次数:0
复制
/**
 * A method for inserting multiple rows into the specified table
 * 
 *  Usage Example: 
 *
 *  $insert_arrays = array();
 *  foreach($assets as $asset) {
 *
 *  $insert_arrays[] = array(
 *  'type' => "multiple_row_insert",
 *  'status' => 1,
 *  'name'=>$asset,
 *  'added_date' => current_time( 'mysql' ),
 *  'last_update' => current_time( 'mysql' ));
 *
 *  }
 *
 *  wp_insert_rows($insert_arrays);
 *
 *
 * @param array $row_arrays
 * @param string $wp_table_name
 * @return false|int
 *
 * @author  Ugur Mirza ZEYREK
 * @source http://stackoverflow.com/a/12374838/1194797
 */

function wp_insert_rows($row_arrays = array(), $wp_table_name) {
    global $wpdb;
    $wp_table_name = esc_sql($wp_table_name);
    // Setup arrays for Actual Values, and Placeholders
    $values = array();
    $place_holders = array();
    $query = "";
    $query_columns = "";

    $query .= "INSERT INTO {$wp_table_name} (";

            foreach($row_arrays as $count => $row_array)
            {

                foreach($row_array as $key => $value) {

                    if($count == 0) {
                        if($query_columns) {
                        $query_columns .= ",".$key."";
                        } else {
                        $query_columns .= "".$key."";
                        }
                    }

                    $values[] =  $value;

                    if(is_numeric($value)) {
                        if(isset($place_holders[$count])) {
                        $place_holders[$count] .= ", '%d'";
                        } else {
                        $place_holders[$count] .= "( '%d'";
                        }
                    } else {
                        if(isset($place_holders[$count])) {
                        $place_holders[$count] .= ", '%s'";
                        } else {
                        $place_holders[$count] .= "( '%s'";
                        }
                    }
                }
                        // mind closing the GAP
                        $place_holders[$count] .= ")";
            }

    $query .= " $query_columns ) VALUES ";

    $query .= implode(', ', $place_holders);

    if($wpdb->query($wpdb->prepare($query, $values))){
        return true;
    } else {
        return false;
    }

}

来源:https://github.com/mirzazeyrek/wp-multiple-insert

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12373903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档