web-dev-qa-db-ja.com

MySQLiまたは$ wpdbを使用してWordPressでデータを取得する方法

このようなカスタムテーブルがあります。

useraw

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

テーブルにデータを挿入しています

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

このコードを使用して挿入した4行があります。

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

WordPressでMySQLクエリを使用する方法を学びたいです。だからここに私の質問です:

  1. テーブルの全データを表示する方法
  2. 条件が一致した場合にデータを置き換える方法私はtimeuser_ip = 245.356.134.22に変更したいのですが

私が学ぶ必要がある何かがあるかどうか私に知らせてください。

ありがとうございました

4
Ramesh Pardhi

データベーステーブルからデータを取得する

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

if条件で時間フィールドを更新する

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

アップデート

データベースに挿入しようとしているIPが既に存在するかどうかを確認したい場合は、次のように確認してください。

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

あなたの質問にはMYSQLiを指定しますが、あなたの質問にはMySQLにラベルを付けて参照してください。 MySQLを使用している場合は、次のものが役に立ちます。

これは非常に簡単です、そしてあなたがすでにINSERTステートメントを構築しているという事実を考えると、あなたはちょうどそのようにupdateを使うことができます:

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

そうすれば、DB内のどのデータを変更したいかについて、照会に値を設定するだけです。あなたはここで例を見つけることができます: https://codex.wordpress.org/Class_Reference/wpdb#UPDATE_rows

すべてのデータを取得するためには、次のようにします。

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

WHEREパラメータを追加したり、標準のSQLクエリ文と同じようにソートしたりできます。ループスルーはforeachループで実行できます。その後、取得したデータをエコーアウトするだけです。

0
hosker