Cómo obtener datos en WordPress usando MySQLi o $ wpdb

2

Tengo una tabla personalizada como esta:

useraw

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

Estoy insertando datos en la tabla usando

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

Hay cuatro filas que inserté usando este código:

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

Quiero aprender a usar las consultas de MySQL en WordPress. Así que aquí están mis preguntas:

  1. ¿Cómo mostrar todos los datos de la tabla?
  2. Cómo reemplazar datos si la condición coincide. Al igual que quiero cambiar el time donde user_ip = 245.356.134.22

Por favor, avíseme si hay algo que deba aprender.

Gracias

    
pregunta Ramesh Pardhi 25.07.2016 - 01:56

3 respuestas

3

Para obtener datos de la tabla de la base de datos

<?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)

Para actualizar el campo de la hora si la condición

<?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
);
}
?>

Actualizar

Si desea verificar si la IP que va a insertar en la base de datos ya existe o no, entonces verifíquela de esta manera

<?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
}


?>
    
respondido por el Rishabh 25.07.2016 - 09:24
1
//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' )
);
    
respondido por el Ganesh 27.07.2016 - 07:29
0

Usted indica MYSQLi en su pregunta, pero etiqueta y se refiere a MySQL en su pregunta. Si está utilizando MySQL, lo siguiente funcionará para usted:

Esto es bastante simple, y dado el hecho de que ya tiene la declaración de inserción construida, puede usar la actualización así:

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

Entonces, todo lo que tendría que hacer es establecer los valores en su consulta en cuanto a qué datos en la base de datos que desea cambiar. Puede encontrar ejemplos aquí: enlace

En cuanto a la obtención de todos los datos, puede utilizar lo siguiente:

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

Puede agregarle cualquier parámetro WHERE u ordenarlo como una instrucción de consulta SQL estándar. En ese momento, puede hacer un bucle a través de un bucle foreach y, luego, repetiría los datos que recuperó.

    
respondido por el hosker 25.07.2016 - 02:43

Lea otras preguntas en las etiquetas