si la declaración de consulta de base de datos
Pregunta
Una parte de un guión de votación estoy trabajando en:. Estoy comprobando una tabla personalizada en mi base de datos de WP para ver si un usuario ya votó por una entrada por el control de la dirección IP y el ID del mensaje
Si IP del usuario ya existe para el puesto que votaron, quiero hacer eco "ya ha votado!" de lo contrario añadir el IP. Esto es lo que ocurrió con ..
global $wpdb;
$voter_ip = $_SERVER['REMOTE_ADDR'];
$post_id = $_POST['post_id'];
if (!($wpdb->get_row("SELECT voter_ip FROM wp_voter_ips WHERE post_id = $post_id AND voter_ip = $voter_ip") ) ) { //if IP address for matching post id not found in wp_voter_ips table
$wpdb->insert( $wpdb->prefix . 'voter_ips', array( 'post_id' => $post_id, 'voter_ip' => $voter_ip ) ); //add IP and post_id
echo "voted!";
}
else //if IP already exists
{
echo "Already voted!";
}
Me triples comprobado para asegurarse de que las variables y los nombres de las columnas son correctos. Independientemente de la sentencia if, inserta los votantes IP incluso cuando ya existe.
Solución
En su if()
, debería ser así:
if (!($wpdb->get_row("SELECT voter_ip FROM " . $wpdb->prefix . "voter_ips WHERE post_id = $post_id AND voter_ip = '$voter_ip'")
Aviso de las comillas añadido en $voter_ip
.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a wordpress.stackexchange