Escribí una función que se supone que devuelve el número de filas encontradas en una consulta SELECT, pero siempre parece devolver 0 o una matriz. ¡He estado jugando con esto durante aproximadamente una hora y todavía no puedo resolverlo! Estoy seguro de que estoy haciendo algo estúpidamente mal.
La tabla de 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

Respuestas:
Si simplemente está tratando de obtener un recuento,
$wpdb->get_var();junto con el usoCOUNT()en su sql será mejor:En cuanto a lo que salió mal en su ejemplo anterior, no estaba asignando su
$wpdb->get_results()instancia a una variable, y sin ella$wpdb->num_rows;solo devolverá cero, ya que en realidad no se extrae de la instancia de la consulta, sino más bien el $ wbdb global objeto.Si quieres usar
get_results():Pero no vería la necesidad de eso a menos que necesite los resultados, en cuyo caso simplemente devolvería el
$ipqueryobjeto y lo usaríanum_rowscuando lo necesitara:fuente
Parece que la consulta es incorrecta.
$ipes una cadena, por lo que debe poner una comilla simple alrededor de eso como a continuaciónfuente