1

mysql_ から mysqli に変換しています。いくつかのチュートリアルを行っています。件名を読んでグーグルで検索しても、あまり成功しません。準備済みステートメントを試みましたが、0 の結果が出力され続けます (つまり、 now_rows =0 )。mySQL テーブルを手動でクエリすると、多数の結果が返されます。

mySQLI 5.0.96 が有効になっています

<?
include("conn.php");
// SELECT sql query
$sql = "SELECT id, rotation, assignedRad FROM sched_main WHERE thedate = ?"; 
// perform the query and store the result
$query = $conn->prepare($sql);
$thedate='2013-01-02';
$query->bind_param('s', $thedate);
$query->execute();
// if the $query contains at least one row
if ($query->num_rows > 0) {
  // output data of each row from $query
  while($row = $query->fetch_assoc()) {
    echo '<br /> id: '. $row['id']. ' - name: '. $row['rotation']. ' - pass: '.     $row['assignedRad'];
  }
  $query->free();
}
else {
  echo '0 results';
}
?>

質問 2: mysqli をデバッグする簡単な方法はありますか? mysql_query を使用すると、単純に $sql; をエコーし​​ます。デバッグ プロセスの一環として、SELECT ステートメントがどのように表示されるかを確認します。前もって感謝します

更新しました:

以下に、更新されたコードのスニペットを示します。

$query->bind_param('s', $thedate);
if (!$query->execute()) {
  die($conn->error);
}
$query->store_result();
// if the $query contains at least one row
if ($query->num_rows > 0) {
  // output data of each row from $query
  while($row = $query->fetch()) {
    echo '<br /> id: '. $row['id']. ' - name: '. $row['rotation']. ' - pass: '. $row['assignedRad'];
  }
  $query->mysqli_free();
}
else {
  echo '0 results';
}

これで、配列 $row 値を値なしとして出力します。

id: - name: - pass: 
id: - name: - pass: 
id: - name: - pass:

...など...

Fatal error: Call to undefined method mysqli_stmt::mysqli_free() も表示されます

free() を試すと、次のようになります: Fatal error: Call to undefined method mysqli_stmt::free()

4

1 に答える 1

0

デバッグ部分についてはよくわかりませんが、呼び出す前に DB 実行呼び出しの結果を保存する必要があるかもしれません$query->num_rows。また、準備と実行が成功したかどうかを確認することもできます。

...
if (!$query = $conn->prepare($sql)) {
  die($conn->error);
}
$thedate='2013-01-02';
$query->bind_param('s', $thedate);
if (!$query->execute()) {
  die($conn->error);
}
$query->store_result();
if ($query->num_rows > 0) {
  ...
}

num_rowsとの詳細については、PHP のドキュメントを参照してください。error

于 2013-01-18T19:41:13.403 に答える