2017-04-04 4 views
1

私はすべての天気予報のHTMLテーブルとその人の名前と電子メールを印刷するのにPHPが必要です。 mysqli_stmt :: bind_result(): それは私にエラー を警告与えバインド変数の数は、ここでPHPを使用してHTMLに出力SQLテーブル

に準備されたステートメントのフィールド数と一致していない私のコードです

$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

を都市を追加し、あなたのクエリで選択した項目をバインドする必要があります。レポート、名前、メール。 3つしかバインドしていない場合は、bind_resultに3を入れることはできますか? – clearshot66

+0

* 3 *の項目(レポート、名前、電子メール)を選択すると、$ tempCity、$ tempReport、$ tempName、$ tempEmailの4つの結果をバインドできません(編集:自分自身に注意してください: ^) – OldPadawan

+0

@OldPadawan答えを追加した後、私はそのコメントを完全に削除するつもりだった – clearshot66

答えて

1

実際には、文字通り言います。クエリで選択した項目の正確な量をバインドする必要があります。ですからから、名前、電子メールを報告し、あなたの「だから

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

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

バインドべきでしょうか?あなたが知っている、あなただけの3を選択した場合にのみbind_resultに3を持つことができます..... SELECTあなたがそれらを選択した順序でなければなりません。あなたがレポートと都市を反転した場合、バインディング時にレポートデータが都市に入り、逆も同様です。

0

select文に3つのフィールドを記述し、 bind_result関数のパラメータ。したがって、bind_resultはseleの4番目のパラメータを見つけることができませんでしたct

関数呼び出しから1つのパラメータを削除します。 $ stmt-> bind_result($ tempReport、$ tempName、$ tempEmail);

それとも

それが笑言う文字通り何select文で

関連する問題