MySQLのテーブル表示 - PHPプロ!Q&A掲示板

2776

  • 0P

MySQLのテーブル表示

質問日時 / 2010年6月21日 23:46    回答数 / 6件

Questioner:  hamejiT  このエントリーをはてなブックマークに追加 

キーワード / 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>

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



ツリー一覧

┗A01shimix>以下のスクリプトでエラーが出て直せないので困って
 ┗A01-1hamejiTshmixさん、ありがとうございます。 エラーは3つ出て
  ┗A01-1-1shimixそのエラーメッセージであれば、($sqlを投げた)$res
   ┗A01-1-1-1hamejiTshimixさん、ご指摘の通りdie()を追加して実行してみ
    ┗A01-1-1-1-1shimix>$table を All っていう名前にしてるんですが、
     ┗A01-1-1-1-1-1hamejiTshimixさん、ありがとうございました。 何度もお付き

回答一覧

並び替え:

A01
answerershimix [6月22日 03:07]

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

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


ちょっと目に付いたのは

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

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

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

この意見に回答する

ツリーへ TOPへ

A01-1
replyerhamejiT [6月22日 21:48]

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のデータベースの表の項目のデータ型
が不適当な場合もこんなエラーでたりしますか?

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyershimix [6月23日 07:04]

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

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

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

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyerhamejiT [6月24日 01:32]

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拡張をロードできません」って出ますが、これが影響してる可能性はありますか?

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1 満足
replyershimix [6月24日 08:30] (最終編集:6月24日 08:31)

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

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

>$table = "tb";

となっていますから、

  1. $table = "All";

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


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

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1
replyerhamejiT [6月24日 22:27]

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

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

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

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

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

次は文字化けとの戦いがんばります。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPでのRSS表示までの流れについて
 このエントリーをはてなブックマークに追加 
A
get_headers()だとフィードを重複取得したり、宜しく無い様なので、 この件は忘れて、フィード内の以下の値をチェックしてください。 RSS1.0: channel>d:date RSS2.0: channel>lastBuildDate ATOM: modifi...

>>続きを読む

phpファイルをどう分けるか、といった問題は経験のある人に相談すると安心できますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)