Come recuperare i dati in WordPress usando MySQLi o $wpdb

25 lug 2016, 02:56:14
Visualizzazioni: 97.3K
Voti: 11

Ho una tabella personalizzata come questa:

useraw

1. id (Primary*)
2. user_ip
3. post_id
4. time

Sto inserendo i dati nella tabella usando

$wpdb->insert($table_name , array('user_ip' => $user_ip, 'post_id' =>
$postID, 'time' => $visittime),array('%s','%d', '%d') );

Ci sono quattro righe che ho inserito usando questo codice:

id                  :        245
user_ip             :        245.346.234.22
post_id             :        24434
time                :        255464

id                  :        345
user_ip             :        245.346.234.22
post_id             :        23456
time                :        23467

id                  :        567
user_ip             :        245.346.234.22
post_id             :        57436
time                :        5678

id                  :        234
user_ip             :        245.356.134.22
post_id             :        2356
time                :        45678

Voglio imparare come utilizzare le query MySQL in WordPress. Quindi ecco le mie domande:

  1. Come visualizzare tutti i dati della tabella?
  2. Come sostituire i dati se la condizione corrisponde. Ad esempio, voglio cambiare il valore di time dove user_ip = 245.356.134.22

Per favore, fatemi sapere se c'è qualcosa che devo imparare.

Grazie

0
Tutte le risposte alla domanda 3
6
11

Per recuperare i dati da una tabella del database

$results = $wpdb->get_results( "SELECT * FROM $table_name"); // Query per recuperare i dati dalla tabella del database e memorizzarli in $results
if(!empty($results))                        // Verifica se $results contiene valori o meno
{    
    echo "<table width='100%' border='0'>"; // Aggiunge i tag <table> e <tbody> fuori dal ciclo foreach per evitare che vengano creati ripetutamente
    echo "<tbody>";      
    foreach($results as $row){   
    $userip = $row->user_ip;               // Memorizza il valore del campo user_ip in una variabile per usarlo successivamente in una query di aggiornamento
    echo "<tr>";                           // Aggiunge righe della tabella all'interno del ciclo foreach
    echo "<th>ID</th>" . "<td>" . $row->id . "</td>";
    echo "</tr>";
    echo "<td colspan='2'><hr size='1'></td>";
    echo "<tr>";        
    echo "<th>IP Utente</th>" . "<td>" . $row->user_ip . "</td>";   // Recupera i dati dal campo user_ip
    echo "</tr>";
    echo "<td colspan='2'><hr size='1'></td>";
    echo "<tr>";        
    echo "<th>ID Post</th>" . "<td>" . $row->post_id . "</td>";
    echo "</tr>";
    echo "<td colspan='2'><hr size='1'></td>";
    echo "<tr>";        
    echo "<th>Ora</th>" . "<td>" . $row->time . "</td>";
    echo "</tr>";
    echo "<td colspan='2'><hr size='1'></td>";
    }
    echo "</tbody>";
    echo "</table>"; 

}

NOTA: Modifica il formato di recupero dei dati in base alle tue esigenze (struttura della tabella)

Per aggiornare il campo time in base a una condizione

 if($userip==245.356.134.22){  // Verifica se il campo user_ip ha il seguente valore
$wpdb->update( 
$table_name, 
array( 
    'time' => 'IL TUO NUOVO ORARIO' // Inserisce il nuovo valore per il campo time
),      
array('%d')                   // Specifica il tipo di dato del campo time
);
}

Aggiornamento

Se vuoi verificare se l'IP che stai per inserire nel database esiste già o meno, puoi farlo in questo modo

global $wpdb,$ip;
$results = $wpdb->get_results( "SELECT user_ip FROM $table_name");  // Query per recuperare i record solo dal campo user_ip

$new_ip = 245.356.134.22;   // Memorizza il nuovo indirizzo IP in una variabile

if(!empty($results))                       
{    
    foreach($results as $row){  
    $old_ip = $row->user_ip;        // Memorizza il valore del campo user_ip in una variabile
    if($new_ip==$old_ip){           // Confronta il nuovo indirizzo IP con quelli vecchi
      $ip = 'Esiste già';        // Se l'IP esiste già nel database, assegna una stringa alla variabile
    }
    }

}
if($ip = 'Esiste già'){          // Verifica se la variabile contiene una stringa (contiene una stringa solo se l'IP esiste già nel database, come verificato nella condizione if confrontando i vecchi IP con il nuovo)
// Query di inserimento nel caso in cui l'IP esista già nel database
}else{
// Query di inserimento nel caso in cui l'IP non esista nel database
}
25 lug 2016 10:24:05
Commenti

Fantastico... puoi dirmi come posso verificare se l'indirizzo ip è già nel database o no? Se l'indirizzo IP è già nel database allora esegui il programma 1 e se non c'è, esegui il programma 2. So che dobbiamo usare WHERE nella query ma non so come usarlo

Ramesh Pardhi Ramesh Pardhi
25 lug 2016 11:16:51

Hai visto la risposta aggiornata?

Rishabh Rishabh
26 lug 2016 08:32:41

Ho provato questo e funziona. Ma al momento sta recuperando tutti i dati dal database usando foreach, poi sta compilando il nostro codice per verificare se l'ip è lo stesso o no. C'è un altro modo per far controllare direttamente quell'ip usando una query al database?

Ramesh Pardhi Ramesh Pardhi
26 lug 2016 15:04:36

La risposta è stata aggiornata! Controlla se è quello che ti serve.

Rishabh Rishabh
27 lug 2016 08:18:17

Rishabh, grazie per avermi aiutato... Solo un'ultima domanda. Posso usare una query come SELECT user_ip FROM $table_name WHEREuser_ip= $username. Funzionerà? Grazie per la tua risposta e per l'aiuto Rishabh.

Ramesh Pardhi Ramesh Pardhi
27 lug 2016 09:34:50

Sì, puoi usarla così$results = $wpdb->get_results( "SELECT user_ip FROM $table_name WHERE user_ip = '$username' ");

Rishabh Rishabh
27 lug 2016 11:57:01
Mostra i restanti 1 commenti
2
//Per recuperare i dati usa
global $wpdb;
$results = $wpdb->get_results("SLECT * FROM table_name"); 
//e per aggiornare usa il codice qui sotto 
$wpdb->update( 
  $table_name, 
  array( 
    'time' => time(),   // stringa
  ), 
  array( 'user_ip' => '245.356.134.22' ), 
  array('%s'), 
  array( '%d' )
);
27 lug 2016 08:29:20
Commenti

Aggiungi alcuni commenti prima delle tue righe di codice in modo che lo spettatore possa capire cosa fa il tuo codice e come.

Rishabh Rishabh
27 lug 2016 09:01:03

@Rishabh non c'è bisogno di ulteriori commenti poiché ho inserito i commenti appropriati prima del codice.

Ganesh Ganesh
27 lug 2016 09:36:49
5

Hai indicato MYSQLi nella tua domanda, ma hai etichettato e fatto riferimento a MySQL. Se stai usando MySQL, quanto segue funzionerà per te:

Questo è abbastanza semplice e, considerando che hai già costruito l'istruzione INSERT, puoi semplicemente usare UPDATE in questo modo:

$wpdb->update($table_name , array('user_ip' => $user_ip, 'post_id' =>$postID, 'time' => $visittime),array('%s','%d', '%d') );

Quindi tutto ciò che dovresti fare è impostare i valori nella tua query in base ai dati che vuoi modificare nel database. Puoi trovare esempi qui

Per quanto riguarda il recupero di tutti i dati, potresti usare quanto segue:

$results = $wpdb->get_results("SELECT * FROM table_name"); 

Puoi aggiungere qualsiasi parametro WHERE oppure ordinarlo come una normale istruzione SQL. Puoi poi iterare i risultati con un ciclo foreach e visualizzare i dati recuperati.

25 lug 2016 03:43:01
Commenti

Grazie per la risposta @hosker. Ma volevo sapere come recuperare quel $results

Ramesh Pardhi Ramesh Pardhi
25 lug 2016 11:18:43

Sono disposto ad aiutare, a differenza di @rishabh, che è stato così gentile da darti una risposta completa con il codice, io ti stavo solo dando le basi su come fare quello che chiedevi. Una semplice ricerca su Google e una consultazione del Wordpress Codex avrebbero potuto risolvere il tuo problema. Questi forum sono una risorsa, e io li uso, ma non mi aspetterei mai che qualcuno scriva il codice al posto mio. Avevi già impostato metà del lavoro, ma eri troppo pigro per capirlo e scrivere il codice da solo. Non si impara se qualcuno fa tutto al posto tuo.

hosker hosker
26 lug 2016 02:16:29

@hosker hai ragione amico! Lo studio autonomo è fondamentale... Ora mi rendo conto che non avrei dovuto dare la risposta completa.

Rishabh Rishabh
26 lug 2016 08:36:54

Mmm! avete ragione ragazzi. Quello che ho chiesto qui è per mia referenza. Quello che sto cercando di fare è qualcosa di diverso. Voglio sapere alcune cose per usarle con il mio plugin. Quello che voglio sapere è come usare queste query per mostrare l'IP che desidero senza recuperare tutti i dati dal database. Voglio una query che controlli l'IP che voglio e poi lo visualizzi. E se avessi 30000 IP? Recupererebbe tutti i 30000 IP usando foreach. Non è corretto! Ecco perché ho bisogno del vostro aiuto.

Ramesh Pardhi Ramesh Pardhi
26 lug 2016 15:13:04

solo per farti sapere che il tuo link per "esempi qui" non è più disponibile e stanno cambiando in https://developer.wordpress.org/reference/classes/wpdb/

Steven Smith Steven Smith
13 mag 2021 16:52:17