アシアル株式会社主催 開発者向け、一歩先をいくためのテクニカルセミナー

<< デイレクトリにある画像をリネーム 質問一覧 通常ログイン認証 >>

  • 0P
MySQLのテーブル表示

初歩的質問で申し訳ないです。お助けいただければ幸いです。
以下のスクリプトでエラーが出て直せないので困ってます。
したいことはただ単にデータベースに接続して、テーブルを表示です。
よろしくお願いいたします。

環境は Os Mac X 10.6.4, Apache 2.2.14, php 5.3.1, MySQL 5.1.48

  1. <HTML>
  2. <HEAD>
  3. <TITLE>タイトル</TITLE>
  4. </HEAD>
  5. <BODY>
  6.  
  7. <!-- Title -->
  8. <P><B>タイトル</B></P>
  9.  
  10. <TABLE>
  11.   <TR>
  12.      <TD>項目1</TD>
  13.      <TD>項目2</TD>
  14.      <TD>項目3</TD>
  15.      <TD>項目4</TD>
  16.      <TD>項目5</TD>
  17.      <TD>項目6</TD>
  18.      <TD>項目7</TD>
  19.   </TR>
  20.  
  21. <?php
  22.  
  23. //変数設定・引継
  24. $username = $_POST["id"];
  25. $password = $_POST["ps"];
  26. $host = "localhost";
  27. $database = "db";
  28. $table = "tb";
  29.  
  30. //DB・Tableに接続
  31. $link = mysql_connect($host$username$password);
  32. mysql_select_db($database$link);
  33.  
  34. //データ抽出条件
  35. $sql"SELECT * FROM $table";
  36. $result = mysql_query($sql$link);
  37. $row = mysql_num_rows($result);
  38.  
  39. //検索結果表示
  40. while ($row = mysql_fetch_array($result)) {
  41.  
  42. echo ("<TR>");
  43. echo ("<TD>{$row['項目1']}</TD>");
  44. echo ("<TD>{$row['項目2']}</TD>");
  45. echo ("<TD>{$row['項目3']}</TD>");
  46. echo ("<TD>{$row['項目4']}</TD>");
  47. echo ("<TD>{$row['項目5']}</TD>");
  48. echo ("<TD>{$row['項目6']}</TD>");
  49. echo ("<TD>{$row['項目7']}</TD>");
  50. echo ("</TR>");
  51. echo ("</TABLE>");
  52.  
  53. }
  54.  
  55. //総数表示
  56. echo ("Total");
  57. echo ("$row");
  58. echo ("件です");
  59.  
  60. //接続解除
  61. mysql_free_result($result);
  62. mysql_close($link);
  63. ?>
  64.  
  65. <HR>
  66. <A href=edit.php>リスト編集</A> / <A href=index.html>Top</A>
  67.  
  68. </BODY>
  69. </HTML>

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

QMySQLのテーブル表示 hamejiT  [06月21日 23時46分] 
┗Re:MySQLのテーブル表示 shimix  [06月22日 03時07分] 
  ┗Re:Re:MySQLのテーブル表示 hamejiT  [06月22日 21時48分] 
    ┗Re:Re:Re:MySQLのテーブル表示 shimix  [06月23日 07時04分] 
      ┗Re:Re:Re:Re:MySQLのテーブル表示 hamejiT  [06月24日 01時32分] 
        ┗満開Re:Re:Re:Re:Re:MySQLのテーブル表示 shimix  [06月24日 08時30分] 
          ┗Re:Re:Re:Re:Re:Re:MySQLのテーブル表示 hamejiT  [06月24日 22時27分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:MySQLのテーブル表示

>以下のスクリプトでエラーが出て直せないので困ってます。

どういうエラーが出るのですか?phpのエラーはちゃんと読めばわかると思うのですが・・


ちょっと目に付いたのは

>$row = mysql_num_rows($result);
>  
>//検索結果表示
>while ($row = mysql_fetch_array($result)) {

同じ$rowという名前の変数を使っていますよね。テーブル内容の表示はいいですが、最後に件数を$rowから表示することは出来ないと思います(すでにmysql_num_rowの結果ではなくmysql_fetch_arrayの結果に置き換わっている)。

#件数の方は$rowじゃなくて$numにするとか・・

Re:Re:MySQLのテーブル表示

shmixさん、ありがとうございます。
エラーは3つ出てきて、以下の通りです。

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given 
というのが on Line 42に出ます。
同様にLine 45のmysql_fetch_array(), Line66のmysql_free_result()にも
expects parameter 1 to be resource, boolean givenと表示が出ます。

自分では$sql = "***"; のこの構文が悪いせいで3つともエラーが帰ってくると思うんですが、
どう見直しても間違ってない気がして行き詰って、質問させていただきました。

今書いてる途中に思ったのですが、呼び出してるMySQLのデータベースの表の項目のデータ型
が不適当な場合もこんなエラーでたりしますか?

Re:Re:Re:MySQLのテーブル表示

そのエラーメッセージであれば、($sqlを投げた)$resultがfalseになっている・・と推測できますよね。

  1. $sql= "SELECT * FROM $table";
  2. $result = mysql_query($sql, $link) or die($sql . '<br />' . mysql_error() . '<hr />');

として、MySQLでどういうエラーになっているかを確認してください。

Re:Re:Re:Re:MySQLのテーブル表示

shimixさん、ご指摘の通りdie()を追加して実行してみました。

$table を All っていう名前にしてるんですが、
結果は...

  1. SELECT * FROM 'All'
  2. You have an error in your SQL syntax;
  3. check the manual that corresponds to your MySQL server version for the right syntax to use near ''All'' at line 1

となりました。
やはり、SQL文に問題がありそうですが、どう直せばいいのかがわからないです。。。

phpmyadminで「mcrypt拡張をロードできません」って出ますが、これが影響してる可能性はありますか?

Re:Re:Re:Re:Re:MySQLのテーブル表示

>$table を All っていう名前にしてるんですが、

代入している部分のソースを転記してみてください。最初に提示されたソースでは

>$table = "tb";

となっていますから、

  1. $table = "All";

という代入式だと推測したのですが、どうも違うように思えます。エラーメッセージ(というかSQL文の表示)を見ると、「`」(バッククォート)でなく「'」で括っているように見えますが・・。


#「All」なんてテーブル名自体もイヤなんですけど。phpMyAdminでcreate tableもselectも
#出来ているんでしょうし(バッククォートで括れば)問題ないんでしょうけど・・。

Re:Re:Re:Re:Re:Re:MySQLのテーブル表示

shimixさん、ありがとうございました。
何度もお付き合いいただいて。

いろいろ試した結果、、「`」(バッククォート)で

  1. $sql = " SELECT * FROM `$tbl` ";

とかこったところ、見事無事に表示されました。
バッククォートに気付くためだけに3日間も費やした・・・。

ああ、やっぱり初歩だった・・・。

次は文字化けとの戦いがんばります。
デイレクトリにある画像をリネーム 質問一覧 通常ログイン認証