如何在PHP中执行其他查询之前查看SQL查询的结果是否为空

Mar*_*lis 6 php mysql database null

我有以下PHP代码,用于应用程序的投票系统.它是一个问答应用程序,用户可以投票选出已发布的问题和答案.

在我的PHP代码中,我首先检查用户是否已投票给某个特定问题.这将存在于QVOTES表中,其中包含电子邮件和正在投票的问题的ID.

执行此检查时,我不确定如何查看$ result是否为空集,以便在尚未对该问题进行投票时提交用户的投票.

我怎样才能使这个工作?非常感谢所有帮助.

<?php

$con=mysqli_connect("127.2.1.1","S837","887","D887");
if (mysqli_connect_errno($con))
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$qid = $_POST['qid'];
$email = $_POST['email'];
$result = mysqli_query($con, "SELECT * FROM QVOTES WHERE QID = $qid AND EMAIL = '$email'");
if (!mysqli_num_rows($result) ){
    if ($result = mysqli_query($con, "INSERT INTO QVOTES (QID, EMAIL) VALUES     ($qid, '$email')")) {
            mysqli_query($con, "Update QUESTIONS SET VOTES = VOTES +1 WHERE     QID = $qid");
            echo "Update successful";
        } else{
            echo "Update unsuccessful";
        }
            } else{
        echo "null";        
    }
    mysqli_close($con);
Run Code Online (Sandbox Code Playgroud)

Ana*_*Die 1

事实上你正在以错误的方式做事。请尝试这样做:-

<?php

$con=mysqli_connect("127.2.1.1","S837","887","D887");
if (mysqli_connect_errno($con))
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$qid = $_POST['qid'];
$email = $_POST['email'];
$result = mysqli_query($con, "SELECT * FROM QVOTES WHERE QID = $qid AND EMAIL = $email") or die(mysqli_error($con)); // no need of extra quote
if ($result->num_rows == 0 ){ // means no vote-up done till now
    $result = mysqli_query($con, "INSERT INTO QVOTES (QID, EMAIL) VALUES ($qid, $email)")or die(mysqli_error($con)); // insert
    if($result){
        echo "Vote Added successfully.";
    } else{
       echo "Error occur while adding vote.Please try again.";
    }
} else{
    $result = mysqli_query($con, "Update QUESTIONS SET VOTES = VOTES +1 WHERE  QID = $qid AND EMAIL = $email")or die(mysqli_error($con)); // upddate
       if($result){
        echo "Vote updated successfully.";
    } else{
       echo "Error occur while updating vote.Please try again.";
    }
}
    mysqli_close($con);
Run Code Online (Sandbox Code Playgroud)

注意:- 为了更好地理解,我更改了消息。您可以根据自己的意愿进行更改。谢谢。