2017-04-04 198 views
1

我需要我的php來打印出所有天氣報告以及該人的姓名和電子郵件的HTML表格。 它給了我一個錯誤 警告:mysqli_stmt :: bind_result():綁定變量的數目不使用php輸出sql表格爲HTML

這裏匹配準備好的聲明中字段數是我的代碼

$query = "SELECT weather.report, 
cities.name, cities.email FROM weather INNER JOIN cities ON weather.city=cities.city "; 


$stmt = $mysqli->stmt_init(); 
if ($stmt->prepare($query)) { 
    //$stmt->bind_param("s", $player); 
    $stmt->execute(); 
    $stmt->bind_result($tempCity, $tempReport, $tempName, $tempEmail); 
    echo "<table width=500 border=1 cellpadding=5> 
      <tr><th>Temperature</th><th>Report</th><th>City</th><th>DATE</th></tr>"; 

    while ($stmt->fetch()) { 
     echo "<tr> 
       <td>".$tempCity."</td> 
       <td>".$tempReport."</td> 
       <td>".$tempName."</td> 
     <td>".$tempEmail."</td> 
       </tr>\n"; 
    } 
    echo "</table>"; 
    $stmt->close(); 
} else { 
    $error = "Sorry could not retrieve information"; echo $error; return; 
} 

$mysqli->close(); 

謝謝你的任何幫助

+0

從字面上看它說什麼笑,你需要在查詢中選擇的項目進行綁定。所以報告,姓名,電子郵件。如果你只綁定三個,你只能在bind_result中有3個,你知道嗎? – clearshot66

+0

如果你選擇* 3 *項目(報告,名稱,電子郵件),你不能綁定4個結果:$ tempCity,$ tempReport,$ tempName,$ tempEmail(編輯:給自己留言:刷新頁面之前給予相同的答案^ ^) – OldPadawan

+0

@OldPadawan我完全打算刪除那個評論後添加答案haha – clearshot66

回答

1

實際上它的字面意思。您需要綁定查詢中所選項目的確切數量。所以報告,姓名,電子郵件中的「選擇.....你只能有3個在bind_result如果你只選擇三個,你知道嗎?所以

$stmt->bind_result($tempCity, $tempReport, $tempName, $tempEmail); 

應該

$stmt->bind_result($tempReport, $tempName, $tempEmail); 

綁定還必須按照您選擇的順序排列,如果您翻轉報告和城市,則報告數據會在綁定時進入城市,反之亦然。只需註釋

0

您在選擇語句中提到了三個字段,並且傳遞了四個bind_result函數中的參數,所以bind_result找不到sele中的第四個參數ct

從函數調用中刪除一個參數 $ stmt-> bind_result($ tempReport,$ tempName,$ tempEmail);

或者

在SELECT語句中加入城市