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

6
我有以下PHP代码,用于一个应用程序的投票系统。这是一个问答应用程序,用户可以为发布的问题和答案投票。
在我的php代码中,我首先检查用户是否已经投票了某个问题。 这将存在于QVOTES表中,并带有正在投票的电子邮件和问题的ID。
在执行此检查时,我不确定如何查看结果是否为空集,以便如果用户尚未对该问题投票,则提交用户的投票。
如何让它工作?万分感谢您的所有帮助。
<?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);

我认为你的条件是错误的。你说如果用户不投票,那么才插入记录。但是通过你的条件,似乎恰恰相反?不是吗? - Alive to die - Anant
还有,您是如何检查用户是否对问题进行了投票?因为我在图片中没有看到user_id。谢谢。 - Alive to die - Anant
@anantkumarsingh 用户ID实际上是用户的电子邮件。 - Marko Vidalis
好的,让我来修正一下。 - Alive to die - Anant
@anantkumarsingh 謝謝 :) - Marko Vidalis
2个回答

1
如何判断 $result 是否为空集?
根据文档:
对于失败的查询,mysqli_query() 返回 FALSE。对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询,mysqli_query() 将返回一个 mysqli_result 对象。对于其他成功的查询,mysqli_query() 将返回 TRUE (Ref)
如果 $result 不是 FALSE,则使用 $result->num_rows。

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);

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接