正確に言うと、私の検索ステートメントはどれもデータを適切に取得しません。これは独特で、正確なクエリをコピーしてphpMyAdminに入れて実行すると、期待どおりの結果が返されます。
挿入ステートメントなどは、次のように機能します。
// On first connect to database, create a user to hold data for users not logged in
$result = $db->query("SELECT id FROM users WHERE id = 1");
if ($result->num_rows == 0) {
$db->query("INSERT INTO users (id, username, email, password) VALUES (1, 'anonymous', 'anonymous', '" . password_hash("...", PASSWORD_BCRYPT) . "')");
}
そして、ユーザーは意図したとおりに入力されます。
しかし、次のようなステートメントを実行すると、次のようになります。
$result = $db->query("SELECT id, username, password FROM users WHERE email = $email");
$row = $result->fetch();
次のエラーが発生します:「致命的なエラー:非オブジェクトでのメンバー関数fetch()の呼び出し」
phpMyAdminでまったく同じステートメントを実行すると、意図したとおりに行が返されます。
ただし、1つの領域でのみ機能します。
if ($result = $db->query("SELECT username, wins, losses FROM users ORDER BY wins DESC LIMIT 10")) {
while ($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row["username"] . "</td> <td>" . $row["wins"] . "</td> <td>" . $row["losses"] . "</td></tr>\n";
}
}
意図した結果を返します。でも、理由はわかりません。
ファイルの構造が重要かどうかはわかりません。必要なconfig.phpファイルがあり、接続情報が含まれています。残りは私のindex.phpファイルにあります。
config.phpは次のとおりです。
<?php
$db_host = $_SERVER["SERVER_NAME"];
$db_user = "...";
$db_pass = "...";
$db_database = "hangman";
$db = new mysqli($db_host, $db_user, $db_pass, $db_database);
if ($db->connect_error) {
echo "Could not connect to database.";
exit;
}
// On first connect to database, create a user to hold data for users not logged in
$result = $db->query("SELECT id FROM users WHERE id = 1");
if ($result->num_rows == 0) {
$db->query("INSERT INTO users (id, username, email, password) VALUES (1, 'anonymous', 'anonymous', '" . password_hash("...", PASSWORD_BCRYPT) . "')");
}
?>
PHPをもっと含めることができます。何を言ってください。これは、私を夢中にさせているだけです。