WordPress db vorbereiten

Ich versuche nicht $ wpdb-> einzufügen, sondern vorzubereiten.

Die Insert-Methode enthält eine Abfragezeichenfolge und ein Array, das # Daten enthält, die nicht definiert sind, aber für jedes Abfragezeichenfolgenschlüsselwort definiert werden.

Beispielsweise definiert die Abfragezeichenfolge “address.insert” eine Abfragekette mit 3 Variablen, wenn sie Abfragen wie owner_id, address_info oder city verarbeitet.

Anstatt $ owner_id, …, $ country im Abschnitt $ wpdb-> preparse zu verwenden, versuche ich, ein Array zu übergeben, das alle unten aufgelisteten Variablen enthält.

Weiß jemand, ob es machbar ist, ein Array für die Vorbereitung zu übergeben? Es funktionierte nicht für mich, als ich es versuchte.

functioniert

$sql = $wpdb->prepare($this->queryArray[$selectQuery], $owner_id, $address1, $address2, $city, $zip, $country); 

Versuchen zu tun

 $sql = $wpdb->prepare($this->queryArray[$selectQuery], $inputArray); 

Hier ist ein Beispielcode.

 public function Insert($selectQuery, $inputArray) { try { global $wpdb; $wpdb->show_errors(); $sql = $wpdb->prepare($this->queryArray[$selectQuery], $owner_id, $address1, $address2, $city, $zip, $country); $result = $wpdb->query($sql); return $result; } catch(Exception $e) { echo $e->getMessage(); return -1; } } 

Getriggers: Das funktioniert einfach.

 $sql = $wpdb->prepare($this->queryArray[$selectQuery], $inputArray); 

Solutions Collecting From Web of "WordPress db vorbereiten"

Aus dem Codex , 2. Parameter für die prepare () Methode:

(int | string | array) Der Wert, der in den Platzhalter eingefügt werden soll. Viele Werte können übergeben werden, indem einfach mehrere Argumente in einer sprintf () – ähnlichen Weise übergeben werden. Alternativ kann das zweite Argument ein Array sein, das die Werte wie in PHPs Vsprintf () -function enthält. Es muss darauf geachtet werden, dass keine direkte Benutzereingabe für diesen Parameter möglich ist, wodurch eine Array-Bearbeitung von Abfragen mit mehreren Platzhaltern möglich wäre. Werte dürfen nicht bereits SQL-maskiert sein.

Sie können also Ihr Eingabearray direkt übergeben, sofern Sie in der Abfragezeichenfolge die gleiche Anzahl von “% s” Platzhaltern wie die Arraylänge haben.

Btw in Ihrem Code oberhalb der $owner_id, $address1, $address2, $city, $zip, $country sind undefiniert. Haben Sie den extract($inputArray) ?