0

私はこのコードを使用してきましたが、正常に動作していますが、結果を 1 つだけ返すクエリを入れたところ、$findproductsrow突然NULL. これを修正するにはどうすればよいですか?(最初の $findproductsresult は null ではなく、2 つ目は null です。) 返される行が 1 つしかない場合、句を追加する必要がありますか?

$UserID = $_SESSION['userID'];
$findproductsstmt = mysqli_prepare($connection, "SELECT DISTINCT PID FROM prices WHERE UserID = ? and Manu = 0");
mysqli_stmt_bind_param($findproductsstmt, 'i', $UserID);
mysqli_stmt_execute($findproductsstmt);
$findproductsresult = mysqli_stmt_get_result($findproductsstmt);
if(mysqli_num_rows($findproductsresult) == 0) {
    echo('This user is not retailing any products.');
}
else{
    $findproductsrow = mysqli_fetch_array($findproductsresult, MYSQLI_ASSOC);
    var_dump($findproductsresult);
    while($findproductsrow = mysqli_fetch_array($findproductsresult, MYSQLI_ASSOC)){
        $_SESSION['PID'] = $findproductsrow['PID'];
        include '../includes/baseproductlist.php';
    }
}
4

1 に答える 1

1

あなたの問題はELSE声明にあります。

問題

else{
    $findproductsrow = mysqli_fetch_array($findproductsresult, MYSQLI_ASSOC); // this pulls the first record, remove this
    var_dump($findproductsresult);
    while($findproductsrow = mysqli_fetch_array($findproductsresult, MYSQLI_ASSOC)){ // causing this to try and pull the second record which doesn't exist
        $_SESSION['PID'] = $findproductsrow['PID'];
        include '../includes/baseproductlist.php';
    }
}

解決

else{
    while($findproductsrow = mysqli_fetch_array($findproductsresult, MYSQLI_ASSOC)){
        $_SESSION['PID'] = $findproductsrow['PID'];
        include '../includes/baseproductlist.php';
    }
}
于 2013-09-17T16:54:13.560 に答える