Saya menulis sebuah fungsi yang seharusnya mengembalikan jumlah baris yang ditemukan dalam kueri SELECT tetapi sepertinya selalu mengembalikan 0 atau array. Saya telah bermain-main dengan ini selama sekitar satu jam sekarang dan saya masih tidak bisa mengetahuinya! Saya yakin saya melakukan sesuatu yang salah.
Tabel MySQL
+--------+-------------+---------------------+
| postid | ip | time |
+--------+-------------+---------------------+
| 1234 | 192.168.0.1 | 2014-01-29 14:27:02 |
| 5678 | 192.168.0.2 | 2014-01-29 14:27:02 |
+--------+-------------+---------------------+
PHP
### Search for IP in database
function postviews_get_ip($id, $ip) {
global $post, $wpdb;
$wpdb->get_results("SELECT * FROM $wpdb->wp_postviews_ips WHERE postid = $id AND ip = $ip");
$rowcount = $wpdb->num_rows;
return $rowcount;
}
postviews_get_ip($id, $_SERVER['REMOTE_ADDR']);
//both $id and $_SERVER['REMOTE_ADDR']) return the values I'm searching for in the database
Jawaban:
Jika Anda hanya mencoba untuk mendapatkan hitungan,
$wpdb->get_var();
seiring dengan menggunakanCOUNT()
dalam sql Anda akan lebih baik:Mengenai apa yang salah pada contoh Anda sebelumnya, Anda tidak menugaskan
$wpdb->get_results()
instance Anda ke variabel, dan tanpanya$wpdb->num_rows;
hanya akan mengembalikan nol karena sebenarnya tidak menarik dari instance kueri, melainkan global $ wbdb obyek.Jika Anda ingin menggunakan
get_results()
:Tapi saya tidak akan melihat perlunya kecuali Anda membutuhkan hasilnya, dalam hal ini saya hanya akan mengembalikan
$ipquery
objek dan menggunakannyanum_rows
ketika saya membutuhkannya:sumber
Tampaknya kueri salah.
$ip
adalah string sehingga Anda harus meletakkan tanda kutip di sekitarnya seperti di bawah inisumber