データベースクエリのIFステートメント
質問
私が取り組んでいる投票スクリプトの一部:WPデータベースのカスタムテーブルをチェックして、ユーザーがIPアドレスと投稿IDをチェックして投稿にすでに投票しているかどうかを確認しています。
投票した投稿のユーザーの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