前提・実現したいこと
ここに質問の内容を詳しく書いてください。
現在、phpとmysqlを使ってラジオボタン式のクイズを作成しています。
https://www.youtube.com/watch?v=ZLC8BLCrxCU&t=635s
上の動画の通りほぼ進めていて、databaseの接続のみ、PDOを使って最初にデータベース名などを定義しtry catchでエラーなどの処理を行なっています。
<質問>
question.phpで、
$question = $result->fetch_assoc();をセットしたところで、したのようなエラーが表示されていました。
これを解決する方法はありますでしょうか?
詳しくは下記のコードをご覧ください。
発生している問題・エラーメッセージ
Uncaught Error: Call to undefined method PDOStatement::fetch_assoc()
該当のソースコード
question.php <?php require_once 'database.php'; ?> <?php //set question number $number = (int) $_GET['n']; //get question $query = "SELECT * FROM question WHERE question_id = $number"; //get result $result = $db->query($query) or die($db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION). __LINE__); $question = $result->fetch_assoc(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charaset="utf-8"> <title>Quiz</title> <link rel="stylesheet" href="styles.css"> </head> <body> <header> <div class="container"> <h1>Welcome to the Vocab quiz</h1> </div> </header> <main> <div class="container"> <div class="current">Question 1 of 5</div> <p class="question"><?php echo $question['question']; ?></p> <form action="process.php" method="POST"> <ul> <li><input type="radio" name="choice" value="1">1</li> <li><input type="radio" name="choice" value="1">2</li> <li><input type="radio" name="choice" value="1">3</li> <li><input type="radio" name="choice" value="1">4</li> <li><input type="submit" value="submit" class="submit"></li> </ul> </form> </div> </main> <div class="container"> <footer>Copyright 2019</footer> </div> </body> </html> .database.php <?php ini_set('display_errors', 1); define('DB_DATABASE', 'quiz101'); define('DB_USERNAME', 'root'); define('DB_PASSWORD', 'xxxxxxx'); define('PDO_DSN', 'mysql:dbhost=xxx.xx.xx.xxx;dbname=' . DB_DATABASE); try { // connect $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo $e->getMessage(); exit; }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー