Foreach add wpdb-> gt; вставка с добавлением неожиданного числа строк

Если вы собираетесь делать это вручную и с помощью опции 1, упомянутой zero323, вы должны посмотреть исходный код Spark для инструкции insert здесь

  def insertStatement(conn: Connection, table: String, rddSchema: StructType): PreparedStatement = {
    val columns = rddSchema.fields.map(_.name).mkString(",")
    val placeholders = rddSchema.fields.map(_ => "?").mkString(",")
    val sql = s"INSERT INTO $table ($columns) VALUES ($placeholders)"
    conn.prepareStatement(sql)
  }

PreparedStatement является частью java.sql и имеет методы, подобные execute() и executeUpdate(). Разумеется, вам все равно придется изменить sql.

-2
задан Shaun 16 January 2019 в 13:00
поделиться

1 ответ

Это потому, что согласно базовой функциональности wordpress хук save_post, запускаемый несколько раз (например, автосохранение), см. Документ Здесь

Так что в первый раз $ qty получит значение null. Значение массива $ будет

array (2) {[0] => int (1) [1] => int (0)}

Необходимо переписать код следующим образом .

add_action( 'save_post', 'mp_sync_on_product_save', 11, 1 );
function mp_sync_on_product_save( $product_id ) {
    global $wpdb;
    if( ! ( wp_is_post_revision( $product_id) || wp_is_post_autosave( $product_id ) ) ) {
        $product = wc_get_product( $product_id );
        $qty = get_field('maximum_entries', $product_id);

        $array = range(1, $qty);

        foreach ($array as $ticket) {
         $wpdb->insert('wp_tickets', array(
            'ticket_number' => $ticket,
         ));
        }
    }
}

Примечание: оставить приоритет add_action более 10, поскольку его приоритет по умолчанию

0
ответ дан Mohammed Shafeek 16 January 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: