web-dev-qa-db-fra.com

Comment récupérer des données dans WordPress avec MySQLi ou $ wpdb

J'ai un tableau personnalisé comme ceci:

useraw

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

J'insère des données dans le tableau à l'aide de

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

Il y a quatre lignes que j'ai insérées en utilisant ce code:

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

Je veux apprendre à utiliser les requêtes MySQL dans WordPress. Donc, voici mes questions:

  1. Comment afficher toutes les données de la table?
  2. Comment remplacer les données si la condition est remplie. Comme je veux changer la timeuser_ip = 245.356.134.22

S'il vous plaît laissez-moi savoir s'il y a quelque chose que je dois avoir besoin d'apprendre.

Je vous remercie

4
Ramesh Pardhi

Pour extraire des données de la table de la base de données

<?php
$results = $wpdb->get_results( "SELECT * FROM $table_name"); // Query to fetch data from database table and storing in $results
if(!empty($results))                        // Checking if $results have some values or not
{    
    echo "<table width='100%' border='0'>"; // Adding <table> and <tbody> tag outside foreach loop so that it wont create again and again
    echo "<tbody>";      
    foreach($results as $row){   
    $userip = $row->user_ip;               //putting the user_ip field value in variable to use it later in update query
    echo "<tr>";                           // Adding rows of table inside foreach loop
    echo "<th>ID</th>" . "<td>" . $row->id . "</td>";
    echo "</tr>";
    echo "<td colspan='2'><hr size='1'></td>";
    echo "<tr>";        
    echo "<th>User IP</th>" . "<td>" . $row->user_ip . "</td>";   //fetching data from user_ip field
    echo "</tr>";
    echo "<td colspan='2'><hr size='1'></td>";
    echo "<tr>";        
    echo "<th>Post ID</th>" . "<td>" . $row->post_id . "</td>";
    echo "</tr>";
    echo "<td colspan='2'><hr size='1'></td>";
    echo "<tr>";        
    echo "<th>Time</th>" . "<td>" . $row->time . "</td>";
    echo "</tr>";
    echo "<td colspan='2'><hr size='1'></td>";
    }
    echo "</tbody>";
    echo "</table>"; 

}
?>

NOTE: Change your data fetching format according to your need (table structure)

Pour mettre à jour le champ heure sur si condition

<?php if($userip==245.356.134.22){  //Checking if user_ip field have following value
$wpdb->update( 
$table_name, 
array( 
    'time' => 'YOUR NEW TIME' // Entring the new value for time field
),      
array('%d')                   // Specify the datatype of time field
);
}
?>

Mettre à jour

Si vous voulez vérifier si l'adresse IP que vous allez insérer dans la base de données existe déjà ou non, vérifiez-la comme ceci

<?php
global $wpdb,$ip;
$results = $wpdb->get_results( "SELECT user_ip FROM $table_name");  //query to fetch record only from user_ip field

$new_ip = 245.356.134.22;   //New Ip address storing in variable

if(!empty($results))                       
{    
    foreach($results as $row){  
    $old_ip = $row->user_ip;        // putting the value of user_ip field in variable
    if($new_ip==$old_ip){           //  comparing new ip address with old ip addresses
      $ip = 'Already Exist';        // if ip already exist in database then assigning some string to variable
    }
    }

}
if($ip = 'Already Exist'){          // Checking if variable have some string (It has some string only when if IP already exist in database as checked in if condition by comparing old ips with new ip)
//Insert query according to Ip already exist in database
}else{
//Insert query according to Ip doesn't exist in database
}


?>
4
Rishabh
//For fetching data use
global $wpdb;
$results = $wpdb->get_results("SLECT * FROM table_name"); 
//and for update use below code 
$wpdb->update( 
  $table_name, 
  array( 
    'time' => time(),   // string
  ), 
  array( 'user_ip' => '245.356.134.22' ), 
  array('%s'), 
  array( '%d' )
);
2
Ganesh

Vous indiquez MYSQLi dans votre question, mais étiquetez et faites référence à MySQL dans votre question. Si vous utilisez MySQL, ce qui suit fonctionnera pour vous:

C’est assez simple, et étant donné que vous avez déjà construit l’instruction insert, vous pouvez simplement utiliser update comme ceci:

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

Il vous suffira ensuite de définir les valeurs de votre requête en fonction des données de la base de données que vous souhaitez modifier. Vous pouvez trouver des exemples ici: https://codex.wordpress.org/Class_Reference/wpdb#UPDATE_rows

Pour récupérer toutes les données, vous pouvez utiliser ce qui suit:

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

Vous pouvez y ajouter des paramètres WHERE ou le trier comme une instruction de requête SQL standard. Vous pouvez alors effectuer une boucle foreach puis renvoyer en écho les données que vous avez récupérées.

0
hosker