Einfügen Array in Plugin-database

Versuchen, ein Plugin zu erstellen, ein Problem zu bekommen, um die Array-Daten in der WordPress-database zu übermitteln.

$ formDATA ruft den Array-Wert ab, der jetzt ausgegeben wird

$sql = "INSERT INTO `".$table_name ."` (`paid_arr`) VALUES '".$formDATA."'"; $result = $wpdb->insert($table_name,$formDATA); 

seltsame Warnungen und Fehler bekommen, die keine Daten in wp DB einfügen können.

  Warning: array_keys() expects parameter 1 to be array, string given in /home3/mahesh/public_html/project/lal/wp-includes/wp-db.php on line 1316 Warning: Invalid argument supplied for foreach() in /home3/mahesh/public_html/project/lal/wp-includes/wp-db.php on line 1318 Warning: implode() [function.implode]: Invalid arguments passed in /home3/mahesh/public_html/project/lal/wp-includes/wp-db.php on line 1327 

Hier ist PHP-Code;

 $formDATA = array( 'fname' => $fname, 'lname' => $lname, 'email' => $paidemail, 'Phone' => $paidphone, 'gender' => $gender, 'hobbies' => $interest, 'hear' => $city, 'message' => $message_field, 'time' => $curtime ); formsubmitpaid($formDATA); function formsubmitpaid( $formDATA ) { global $wpdb; $formDATA = json_encode($formDATA); $table_name = $wpdb->prefix . "padi_forms"; $sql = "INSERT INTO `".$table_name ."` (`paid_arr`) VALUES '".$formDATA."'"; $result = $wpdb->insert($table_name,$formDATA); if( !$result ){ echo 'alert("dfdf")'; } else { echo 'alert("No")'; } print_r($sql); print_r($result); } 

Solutions Collecting From Web of "Einfügen Array in Plugin-database"

Sie sollten Daten als Array übergeben, nicht als JSON-codierte Zeichenfolge. Das Ändern dieser Zeile würde also funktionieren. Entferne einfach die folgende Zeile –

 $formDATA = json_encode($formDATA); 

Wenn Sie die Referenz sehen möchten, bereiten Sie sql auf diese Weise vor

 $sql = "INSERT INTO `".$table_name ."` (`paid_arr`) VALUES '".json_encode($formDATA)."'"; 

Sie können die function serialisieren , um das Array vor dem Einfügen in die database in eine Zeichenfolge zu konvertieren. Rufen Sie während des Abrufs die function unserialize auf, um das Array aus der Zeichenfolge zurückzuholen.

einführen:

 $result = $wpdb->insert($table_name,serialize($formDATA)); 

abrufen:

  $result = unserialize($wpdb->get_col("SELECT paid_arr from $table_name")); 

Sie können auch json_encode und json_decode verwenden. aber json_ * functionen sind in älteren Versionen von PHP nicht verfügbar.

Sie müssen das Array nicht json_encode solange Sie die Tabellenstruktur wie die Formulardatenschlüsselwerte haben. Referenz: wpdb

 $formDATA = array( 'fname' => $fname, 'lname' => $lname, 'email' => $paidemail, 'Phone' => $paidphone, 'gender' => $gender, 'hobbies' => $interest, 'hear' => $city, 'message' => $message_field, 'time' => $curtime ); formsubmitpaid($formDATA); function formsubmitpaid($formDATA) { global $wpdb; $table_name = $wpdb->prefix . "padi_forms"; $result = $wpdb->insert( $table_name, $formDATA, array( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ); if( $result === false ) echo 'Error'; else echo 'success'; }