web-dev-qa-db-ja.com

データベースクエリの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!";
}

変数と列名が正しいことを確認するために3回チェックしました。 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に追加された引用符に注目してください。

4
ariefbayu