3

これが私のコードです:

            $stmt1 = $db->prepare("SELECT wins FROM users WHERE id = ?");
            $stmt2 = $db->prepare("SELECT losses FROM users WHERE id = ?");

            $stmt1->bind_param("i", $_SESSION["id"]);
            $stmt2->bind_param("i", $_SESSION["id"]);

            $stmt1->bind_result($db_wins);
            $stmt2->bind_result($db_losses);

            $stmt1->execute();
            $stmt2->execute();

            $stmt1->fetch();
            $stmt2->fetch();

            // Print out user scores
            echo "<p><strong>User:</strong> " . $_SESSION["username"] . "</p>\n";
            echo "<p><strong>Wins:</strong> " . $db_wins . "</p>\n";
            echo "<p><strong>Losses:</strong> " . $db_losses . "</p>\n";

テーブルの値を出力する必要があるときに0を出力するlossを除いて、すべてが正しく出力されます。

注意点:

  • 準備ステートメントを使用せずに、ページの少し下に意図したとおりに値を出力します。
  • phpMyAdmin(0を返すクエリ)またはSequel Proで実行すると、正しい損失値が返されます。
4

3 に答える 3

1

上記の Kolink のコメントには同意しますが、コードを次のように変更すると、問題が解消されるはずです。ただし、PHP ページでは次の代替手段が提供されていますが、それはあなたの場合にも使用できますか? 編集:明らかに、bind_param をこれに組み込むことができます。

/* prepare statement */
if ($stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {
   $stmt->execute();

   /* bind variables to prepared statement */
   $stmt->bind_result($col1, $col2);

   /* fetch values */
   while ($stmt->fetch()) {
       printf("%s %s\n", $col1, $col2);
   }

   /* close statement */
   $stmt->close();
}
于 2013-02-22T20:57:52.837 に答える
0

引数なしで使用fetch()しているため、デフォルトでは必要なデータが返されます。これを渡すと、ドキュメントに従ってPDO::FETCH_BOUNDバインド操作がトリガーされる可能性があります。

于 2013-02-22T20:56:03.410 に答える
0

de variable を出力する代わりに ($db_losses) をカウントしようとしましたか?

Mysql 配列のポインターが最初の要素になく、配列の最後の要素にとどまって 0 を出力することがあります。

配列で reset() 関数を使用してみてください。http://www.php.net/reset

于 2013-02-22T21:01:10.157 に答える