Если оператор по запросу базы данных
Вопрос
Часть сценария голосования, над которым я работаю: я проверяю пользовательскую таблицу в своей базе данных 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
.
Не связан с wordpress.stackexchange