Вопрос

Часть сценария голосования, над которым я работаю: я проверяю пользовательскую таблицу в своей базе данных WP, чтобы увидеть, проголосовал ли пользователь за сообщение, проверив IP -адрес и идентификатор сообщения.

Если IP -адрес пользователя уже существует за пост, который они проголосовали, я хочу отозвать «уже голосовал!» В противном случае добавьте IP. Это то, что я придумал ..

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!";
}

Я тройной проверил, чтобы убедиться, что переменные и имена столбцов верны. Независимо от заявления IF, он вставляет избирателей IP, даже если он уже существует.

Это было полезно?

Решение

На вашей if(), это должно быть так:

if (!($wpdb->get_row("SELECT voter_ip FROM " . $wpdb->prefix . "voter_ips WHERE post_id = $post_id AND voter_ip = '$voter_ip'")

Обратите внимание на котировочный знак, добавленную на $voter_ip.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top