Если вы собираетесь делать это вручную и с помощью опции 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
.
Это потому, что согласно базовой функциональности wordpress хук save_post, запускаемый несколько раз (например, автосохранение), см. Документ Здесь
Так что в первый раз $ qty получит значение null. Значение массива $ будет
array (2) {[0] => int (1) [1] => int (0)}
blockquote>Необходимо переписать код следующим образом .
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, поскольку его приоритет по умолчанию
blockquote>