Windows10でXamppを使っています。パソコンを初期化したのですが、その影響か、PHPコードを実行したとき、MySQL(MariaDB)のデータベースに接続できないという不具合が発生しています。
Xamppのコントロールパネルでは、、MySQLは起動自体はしていて、phpMyAdminで今まで作ったデータベースを閲覧、操作することは可能です。
しかし、以前作ったDBを使ったPHPのプログラムを実行すると、DBから取り寄せる情報が表示されないという不具合が起きています。これは、PHPのデータベース接続用API(PDO)がMySQLに接続できていないということだと思います。
phpmyadminで作成したデータベースのテーブルにアクセスしようとしたところ、
1932エラー「Table 'テーブル名' doesn't exist in engine」を吐きました。
PCの初期化の時に、私の作ったテーブルが消えてしまったということでしょうか?
それとも残っていて、何らかのエラーでphpMyAdminで読み込めないだけでしょうか?
(データベース自体にはアクセスできてるので、存在するとは思うのですが…)
問題なのは、エラーメッセージが何も出ていないということです。
Googleで調べたのですが、1932エラーについての情報が少なすぎて、どうにもなりません。
(PCを初期化した結果こうなった、という状況についてはさらに情報が少ないです。)
どこの設定をチェックすればいいでしょうか?
ご回答宜しくお願いします。
###追記
正常に動かないPHPプログラムの画像を張ります。
画像の矢印の部分のSelectのところに、MySQLのDBのテーブルに入っているデータが入るはずなんです。
このプログラムのソースコードは以下の通りです。
php
1<!DOCTYPE html> 2<html lang="ja" dir="ltr"> 3 <head> 4 <meta charset="utf-8"> 5 <title>プロジェクトマネージャー</title> 6 </head> 7 <body> 8 <?php 9 /*データベースから科目名と科目コードを取得しておく*/ 10 $dsn = "mysql:dbname=project_manager;host=localhost"; 11 $user = 'root'; 12 $password = '*******';//個人情報のため、秘匿 13 $dbh = new PDO($dsn,$user,$password); 14 $dbh -> query('SET NAMES utf8'); 15 16 $sql = 'SELECT code,subject_name FROM subject WHERE 1'; 17 $stmt = $dbh -> prepare($sql); 18 $stmt -> execute(); 19 20 while(true){ 21 $rec = $stmt->fetch(PDO::FETCH_ASSOC); 22 if($rec==false){ 23 break; 24 }; 25 $subject[] = $rec["subject_name"]; 26 $code[] = $rec["code"]; 27 }; 28 29 $dbh = null; 30 31 ?> 32 33 単元追加 <br><br> 34 <form action="tangen_main.php" method="post"> 35 科目: 36 <select name="subject"> 37 <?php 38 $max = count($subject); 39 for($i=0;$i<$max;$i++){ 40 print '<option value="'.$subject[$i].'">'.$subject[$i].'</option>'; 41 } 42 //submit時には、選択された科目コードがvalueに格納される 43 ?> 44 </select> 45 <br> 46 単元: 47 <input type="text" name="tangen" value="" style="width:300px"> 48 <br> 49 済or未<input type="checkbox" name="checkbox[]" value=""><!--checkboxはnameに[]が必要--> 50 <br> 51 <button type="submit">OK</button> 52 <br><br> 53 <a href="tangen_hyou.php">単元表へ</a> 54 </form> 55 56 </body> 57</html> 58
phpMyAdminの方のエラーについては、以下画像のようになります。
###追記その2
いまコマンドプロンプトで試してみたところ、データベースのテーブル一覧まではアクセスできたのですが、
SELECT文でテーブルの中に格納されたレコードを参照しようとすると、同じく1932エラーを吐きました。
つまり、phpとか関係なく、そもそも、
以前作ったテーブルが存在しないことになっている
ということです。
PC初期化の際にデータが消えてしまったのでしょうか?
データベース自体は残っているのに、なぜデータそのものだけなくなるんでしょう?
ご回答宜しくお願いSます。
###追記その3 パソコン初期化前後のバックアップと復元の流れ
ある日スタートアップ画面にてフリーズにより強制終了
→スタートアップ復元起動するも完走せずに通常起動し、真っ黒な画面に。
→回復ドライブを作成し再度スタートアップ復元をするも、完走せず
→システムの復元を実行するも、問題が発生して終了。その後、再起動ループに陥る
→セーフモードでシステムの復元を実行するも、同じく
→以前のバージョンに戻そうにも、問題が発生して終了
→PCの初期化を実行。やっと正常に動くように。