PHP WordPress - Daten eines Posts in eine andere Datenbank schreiben

cardinal

Lt. Junior Grade
Registriert
Mai 2010
Beiträge
467
Moin Community,

ich versuche einen Post der veröffentlicht werden soll in eine andere Datenbank die auf einem anderen Server liegt zu kopieren (mit einem Wordpress-Plugin). Nicht alle Daten, sondern nur den Titel, Inhalt und benutzerdefinierte Felder.
Die Verbindung zur Datenbank besteht und wurde von mir getestet.
Leider schaffe ich es nicht, die Daten via "INSERT INTO" in die Datenbank zu schreiben. Da kommt einfach nichts an. Und die Variablen in denen die Daten stehen kann ich per "echo" komischerweise nicht anzeigen lassen. Also weiß ich auch nicht, ob da etwas drin steht.

Hier mal das was ich schon habe:
PHP:
// Zum Aufbau der Verbindung zur Datenbank ****** Verbindung funktioniert ***** Ist getestet
define ( 'MYSQL_HOST',      $hostname );
define ( 'MYSQL_BENUTZER',  $username );
define ( 'MYSQL_KENNWORT',  $password );
define ( 'MYSQL_DATENBANK', $database_name );

$db_link = mysqli_connect(
	MYSQL_HOST,
	MYSQL_BENUTZER,
	MYSQL_KENNWORT,
	MYSQL_DATENBANK);

//Hier muss ich auskommentieren, da er mir sonst eine Fehlermeldung zum Header auswirft.
/**
if ( $db_link ){
	echo 'Verbindung mit Datenbank erfolgreich!';
	}
	else{
		// hier sollte dann später dem Programmierer eine
		// E-Mail mit dem Problem zukommen gelassen werden
		die('Keine Verbindung zur Datebank möglich: ' . mysqli_error($db_link));
	}
*/

//In DB einfügen
//Hier soll die Funktion ausgeführt werden, wenn der Post veröffentlicht wird (publish_post)
add_action('publish_post' , 'projekte_einfügen');

function projekte_einfügen(){

	global $postID;
	global $db_link;
	global $kuerzel;
	global $titel;
	global $inhalt;
	global $projektart;


	if( $prof_kuerzel != ""){


		$insert = "INSERT INTO project VALUES ('$postID', '$kuerzel', '$projektart', '$inhalt', '$titel')";
		mysqli_query($db_link, $insert)
		or die("Fehler: ".mysqli_error($db_link));
	}
}

Die Inhalte wollte ich mit Funktionen auslesen:
PHP:
//Das kann sich in etwa auf alle anderen Variablen bzw Daten übertragen lassen
add_action('publish_post','projekte_getInhalt');

function projekte_getInhalt(){

    global $postID;
    $inhalt = get_post_field( 'post_content', $postID);
    return $inhalt;
}

Falls jemand einen Tip hat wäre ich sehr dankbar ;)

Schönen Abend noch,
Lui
 
Du gibst im INSERT auch nur die Tabelle an, aber nicht in welche Spalte.

So sollte es ca aussehen:
INSERT INTO project (postID, kuerzel, projektart, inhalt, titel) VALUES ('$postID', '$kuerzel', '$projektart', '$inhalt', '$titel')
 
Hi,

@Jokeboy

man muss bei einem Insert die Spalten auch nicht angeben! Hängt von der Tabelle und den übergebenen Daten ab, ob es so klappt oder nicht.

@TE

hast du mal unabhängig vom eigentlichen Post getestet, ob du einen "INSERT" auf die Datenbank hinbekommst? Also ohne Wordpress, ohne auslesen, einfach nur eine PHP Datei, von der aus du Dummy-Daten in die andere Datenbank schreibst? Klappt das denn?

VG,
Mad
 
Jokeboy schrieb:
Du gibst im INSERT auch nur die Tabelle an, aber nicht in welche Spalte.

So sollte es ca aussehen:
INSERT INTO project (postID, kuerzel, projektart, inhalt, titel) VALUES ('$postID', '$kuerzel', '$projektart', '$inhalt', '$titel')

Ja, hatte ich vorher auch schon versucht. Leider wird trotzdem nichts eingefügt

Madman1209 schrieb:
Hi,
hast du mal unabhängig vom eigentlichen Post getestet, ob du einen "INSERT" auf die Datenbank hinbekommst? Also ohne Wordpress, ohne auslesen, einfach nur eine PHP Datei, von der aus du Dummy-Daten in die andere Datenbank schreibst? Klappt das denn?

Mmmh...führe ich die Datei aus, bekomme ich eine Fehlermeldung:

Warning: mysqli_connect(): The server requested authentication method unknown to the client [mysql_old_password]
Warning: mysqli_connect(): (HY000/2054): The server requested authentication method unknown to the client
 
Zuletzt bearbeitet:
Da hast Du doch schon Deine Antwort. Der Server verlangt eine Authentifizierungsmethode, die der Client nicht unterstützt. ->Server oder Client um konfigurieren oder austauschen.
 
Zurück
Oben