Php 相同的语句,第二个语句在不同的if中不起作用

Php 相同的语句,第二个语句在不同的if中不起作用,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我试图弄明白为什么mysqli-pared语句不起作用。我可以说这个页面有两个部分,第一个部分需要$\u GET为空,最后一个部分需要$\u GET['id'],另一个部分需要设置为isset。两个部分都有相同的查询,但在最后一部分中,首先有一个不同的查询 在最后一节重复查询之前,一切都正常,没有打印任何内容 我有这样的想法: if (login_check($mysqli) == true) { if(empty($_GET)) { //first section

我试图弄明白为什么mysqli-pared语句不起作用。我可以说这个页面有两个部分,第一个部分需要$\u GET为空,最后一个部分需要$\u GET['id'],另一个部分需要设置为isset。两个部分都有相同的查询,但在最后一部分中,首先有一个不同的查询

在最后一节重复查询之前,一切都正常,没有打印任何内容

我有这样的想法:

if (login_check($mysqli) == true) {

    if(empty($_GET)) { //first section

        if ($stmt = $mysqli->prepare("SELECT friends.*, members.*, account_type.* FROM friends  INNER JOIN members ON members.id = friends.friendID
                                                                                                INNER JOIN account_type ON account_type.name = members.acc_type
                                                                                                WHERE friends.userID = ? AND members.acc_type = ?")) {

            $stmt->bind_param('is', $_SESSION['user_id'], $_SESSION['acc_type']);
            $stmt->execute();

        } else echo $mysqli->error;

        $result = $stmt->get_result();

        // php/mysqli stuff working as expected ($row[] printing db data)
        // no need to close
    }

    if(isset($_GET['id'], $_SESSION['user_id'])) { // last section

        if (mysqli_connect_errno()) {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }

        /* prepare statement */
        if ($stmt = $mysqli->prepare("SELECT COUNT(*) rowCount FROM friends WHERE friendID = ? AND userID = ?")) {
            $stmt->bind_param('ii', $_GET['id'], $_SESSION['user_id']);
            $stmt->execute();
            /* bind variables to prepared statement */
            $stmt->bind_result($rowCount);

            /* fetch values */
            if($stmt->fetch()) {
                if ($rowCount > 0) { // This check is working fine, I tested.
                    $stmt->close();  // close here so no "non-object" error
                    $stmt = $mysqli->prepare("SELECT friends.*, members.*, account_type.* FROM friends  INNER JOIN members ON members.id = friends.friendID 
                                                                                                        INNER JOIN account_type ON account_type.name = members.acc_type
                                                                                                        WHERE friends.friendID = ? AND members.acc_type = ?");
                    $stmt->bind_param('is', $_GET['id'], $_SESSION['acc_type']);
                    $stmt->execute();

                    $result = $stmt->get_result();
                    $row = $result->fetch_array();

                    // Here I have some $row['columns'] and nothing is printed.
                } else{
                    echo $_SESSION['username'], ', you are not allowed to be here.';
                }
            }
            /* close statement */
            $stmt->close();
        }
        /* close connection */
        $mysqli->close();
    }
} else {
        echo 'Please, <a href="login">log in</a>.';
}
第一个查询工作正常,另一个是复制/粘贴

我看不出问题出在哪里:

谢谢

编辑:抱歉,第二个查询应该是WHERE friends.friendID

for ($i = 1; $i < 13; $i++) {
    $month = $row['month' . $i];
    if($row[$month] == 1) {
        $paid[] = 'Paid';
    } else {
        $paid[] = 'Not Paid';
    }
    $bonus = $row['bonus'];
}

问题是members.monthx和friends.monthx具有相同的名称,但它们的值并不相同,因此我不知道从哪个表获得$row['month.$I]。该值应取自friends.monthx。如何指定该值?

出现了什么错误?请尝试将COUNT*作为rowcount尝试对语句使用不同的变量名,因为您将$stmt用于计数和查询。请避免这样。对不起,我会改进这个问题。