it-swarm.com.de

So verwenden Sie das Aktualisieren und Löschen von Abfragen in WordPress

Zuerst schreibe ich manuell, aktualisiere, lösche, füge ein und wähle eine Abfrage aus und führe Daten mit der Funktion mysql_query aus

So was:

Abfrage auswählen

$prefix = $wpdb->prefix;
$postSql = "SELECT DISTINCT post_id
            FROM " . $prefix . "postmeta As meta
            Inner Join " . $prefix . "posts As post
            On post.ID = meta.post_id
            Where post_type = 'product' 
            And post_status = 'publish'
            And meta_key Like '%product_img%'";
$postQry = mysql_query($postSql);
while ($postRow = mysql_fetch_array($postQry)) {
     $post_id = $postRow['post_id'];
}

Abfrage einfügen

$insert_images = "Insert Into " . $prefix . "postmeta(post_id,meta_key,meta_value) Value('$post_id','$meta_key','$data_serialize')";
        mysql_query($insert_images);

Abfrage aktualisieren:

$update_price = "Update " . $prefix . "postmeta
                         Set meta_key = 'wpc_product_price'
                         Where post_id = $supportMetaID
                         And meta_key Like '%product_price%'";
 mysql_query($update_price);

Abfrage löschen

mysql_query("Delete From " . $prefix . "postmeta Where meta_key IN ('product_img1','product_img2','product_img3')");

Alle Abfragen funktionieren einwandfrei ... aber jetzt möchte ich alle Abfragen in WordPress-Abfragen einbetten.

Ich kann auch WordPress-Abfragen wie verwenden

$wpdb->get_results( "SELECT id, name FROM mytable" );
$wpdb->insert( 
    'table', 
    array( 
        'column1' => 'value1', 
        'column2' => 123 
    ), 
);
$wpdb->update( 
    'table', 
    array( 
        'column1' => 'value1',  // string
        'column2' => 'value2'   // integer (number) 
    ), 
    array( 'ID' => 1 )
);
$wpdb->delete( 'table', array( 'ID' => 1 ) );

Aber Sie können sehen, dass ich and / or Bedingungen in meinen Abfragen verwende. Also hilft mir jeder Körper, wie ich meine Abfragen in WordPress einbetten kann

3
deemi-D-nadeem

Über UPDATE + INSERT:

Ich habe eine Funktion für mich selbst erstellt und kann Ihnen auch helfen, d. H.

UPDATE_OR_INSERT('wp_users',  array('gender'=>'female'), array('name'=>'Monika') );

damit wird ein Wert in der Spalte (wobei name=monika) aktualisiert. Falls dieser Wert jedoch nicht vorhanden ist, wird ein neuer Datensatz in der Datenbank erstellt.
Warum ist das notwendig? Denn meines Wissens gibt es keine ausgeklügelte Funktion WP, die Daten in der Datenbank aktualisiert (falls vorhanden) oder Daten einfügt (falls nicht vorhanden). Stattdessen verwenden wir: $wpdb->update() oder $wpdb->insert(). Also, benutze diese Funktion, es hilft:

function UPDATE_OR_INSERT($tablename, $NewArray, $WhereArray){          global $wpdb; $arrayNames= array_keys($WhereArray);
    //convert array to STRING
    $o=''; $i=1; foreach ($WhereArray as $key=>$value){ $o .= $key . ' = \''. $value .'\''; if ($i != count($WhereArray)) { $o .=' AND '; $i++;}  }
    //check if already exist
    $CheckIfExists = $wpdb->get_var("SELECT ".$arrayNames[0]." FROM ".$tablename." WHERE ".$o);
    if (!empty($CheckIfExists))  { return $wpdb->update($tablename, $NewArray,  $WhereArray );}
    else                         { return $wpdb->insert($tablename,     array_merge($NewArray, $WhereArray) );  } 
}
3
T.Todua