2017-05-09 66 views
1

好吧,這讓我感到厭倦,我似乎無法在PHP文檔中找到任何內容,也無法在Google results球中查找任何內容,所以也許有人可以在這裏找到幫助。mysqli_stmt_bind_result不返回值

我試圖做一個簡單的請求數據庫返回varchar(30)

代碼:

$qryID = "select idPhotos from housesphotos where idHouse = ?"; 
//Prepare the query 
$stmt = mysqli_prepare($link, $qryID); 

$x = 106; 
//Bind the login parameter to the statement 
if(mysqli_stmt_bind_param($stmt, "i", $x)){ 
    if(mysqli_stmt_execute($stmt)){ 
     //Bind every column in the select 
     if(mysqli_stmt_bind_result($stmt, $photoID)){ 
//    $photoID = mysqli_stmt_fetch($stmt); 
      echo $photoID; 
     } 
    } 
} 

if(empty($photoID)){ 
    printf("EMPTY"); 
} 

正如您可以猜到輸出是EMPTY。我曾嘗試使用此解決方案:Strange issue with mysqli_stmt_bind_result但它沒有奏效。

爲了確保全部的寄託是suppost去正確地我已經在MySQL查詢,它創造了奇蹟:

select idPhotos from housesphotos where idHouse = 106 

OUTPUT:

591219e92b2fe_591219e92b302 

housephotosvarchar(30)場。我不確定它是否是與返回值相混淆的字段類型。我也不確定,如果這是我之前在代碼中建立的連接,但我嘗試了unset($stmt)和其他變量來解決問題,但它不起作用。

這是某種與mysqli_stmt_bind_result()或只是一個新的人的錯誤的錯誤?

回答

1

你實際上並不是取得的結果 - 你評論了mysqli_stmt_fetch()。提取也返回一個布爾值,而不是實際的結果。取消註釋該行,並刪除對其的變量賦值。

$qryID = "select idPhotos from housesphotos where idHouse = ?"; 
//Prepare the query 
$stmt = mysqli_prepare($link, $qryID); 

$x = 106; 
//Bind the login parameter to the statement 
if(mysqli_stmt_bind_param($stmt, "i", $x)){ 
    if(mysqli_stmt_execute($stmt)){ 
     //Bind every column in the select 
     if(mysqli_stmt_bind_result($stmt, $photoID)){ 
      mysqli_stmt_fetch($stmt); // Remove the comment and variable assignment 
      echo $photoID; 
     } 
    } 
} 

如果你還沒有得到任何結果,則可能是因爲行數返回爲零(你可以在執行後檢查與$stmt->num_rows),但因爲你說的查詢在phpMyAdmin的工作,這是很可能你會忽略某種錯誤。要檢查錯誤,請在您的if條件中添加else,並在裏面添加日誌$stmt->error