Proper Prepare Statement für ALTER TABLE und Verwendung von AFTER

Mein Code für ALTER TABLE verwendet die prepare() -Methode von $wpdb und der Code muss daher ordnungsgemäß aktualisiert werden. Es gibt viele Beispiele für die Abfrage SELECT usw., aber konnte für ALTER TABLE mit verschiedenen Optionen, die in SQL enthalten sind, nichts finden.

Dies ist der alte Code.

 $post_qry = $wpdb->get_row( "SELECT * FROM $wpdb->posts" ); if ( ! isset( $post_qry->forum_id ) ) { $wpdb->query( "ALTER TABLE {$wpdb->posts} ADD `forum_id` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `ID` " ); } 

Dies ist mein erster Versuch, aber etwas sieht für das ADD nicht gut aus.

 if ( ! isset( $post_qry->forum_id ) ) { $wpdb->query( $wpdb->prepare( "ALTER TABLE {$wpdb->posts} ADD col= %s INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER col = %s ", 'forum_id', 'ID' ) ); } 
  • Erstens, ist es richtig, ADD col = oder ist ADD COLUMN=%s ?

  • Zweitens, gilt das auch für die Angabe nach col=%s ?

  • Drittens, sollten INT und UNSIGNED auch als %s ?

Danke für Ihre Zeit zu erklären und vielleicht auf eine gute Ressource verweisen.

Solutions Collecting From Web of "Proper Prepare Statement für ALTER TABLE und Verwendung von AFTER"

Antwort auf diese Frage kommt eigentlich von @ TomJNowell. Benutze statt der MySQL-Aufrufe die nativen functionen von WordPress:

 update_post_meta ( $post->ID , 'forum_id', $thread_id ); 

wo die forum_id ist der Schlüssel und die $thread_id ist der Wert. Ich habe versucht, add_post_meta aber das erstellt Duplikate.

Um die Metadaten abzurufen

$thread_id = get_post_custom_values( 'thread_id', $post->ID);

Jetzt suche ich nach Möglichkeiten, um den Kommentar Meta hinzuzufügen. Hoffentlich hilft das jemand anderem.