このようなカスタムテーブルがあります。
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クエリを使用する方法を学びたいです。だからここに私の質問です:
time
をuser_ip = 245.356.134.22
に変更したいのですが私が学ぶ必要がある何かがあるかどうか私に知らせてください。
ありがとうございました
データベーステーブルからデータを取得する
<?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
}
?>
//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' )
);
あなたの質問には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ループで実行できます。その後、取得したデータをエコーアウトするだけです。