• ベストアンサー

インクルードによる不具合

PHP初心者です。 以下2つのファイルを使って簡単な接続テストを行ってから徐々に 目的のものを作り上げていこうとしたのですが、どうにもうまく動作しません。(2つは同一ディレクトリにある) ・「mysql.php」:DB接続とSQLの発行 ・「test.php」:ブラウザ出力(本体:mysql.php呼び出し元) 実行すると「*** DB/SQLテスト ***」のみブラウザに出力されるため、試しに「mysql.php」で行うDB接続とSQL発行をすべてtest.phpに直接書いてインクルードせず単体で実行したところ、目的の結果が表示されました。 なので問題はインクルード文にあるのだと思うのですが検討がつきません。 どなたかお力をお貸し下さい。 ちなみに以下のコードは参考にしたテキストの例題をもとに見やすくするため余分な処理やエラー処理などを省いたものです。 ■mysql.php <?php class MySQL{ var $m_con; var $m_rows = 0; function MySQL(){ $this->m_con = mysql_connect("ホスト名", "ユーザ名", "パスワード"); mysql_select_db("データベース名", $this->m_con); } function query($sql){ $this->m_rows = mysql_query($sql, $this->m_con); return $this->m_rows; } } ?> ■test.php <html> <head> <meta http-equive="Content-type" content="text/html; charset=utf-8"> <title>SQLtest</title> </head> <body> *** DB/SQLテスト ***<br> <?php include("mysql.php"); $mysql = new MySQL; $sql = "SELECT * FROM staff"; $mysql->query($sql); while($row = mysql_fetch_array($this->m_rows)){ echo $row["id"]; echo $row["name"]; echo "<br>"; } ?> </body> </html>

  • PHP
  • 回答数4
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.4

補足の通り書いているのだとすると・・ ・コメントアウトが不正 / -> // ・DBの接続情報が不正 mysql_connect($this->m_HostName, $m_UserName, $m_Password); -> mysql_connect($this->m_HostName, $this->m_UserName, $this->m_Password);

mapple55
質問者

お礼

ご協力ありがとうございました。 これってありがとうポイントみたいなものはどうやったらつけられるんでしょう・・・?

mapple55
質問者

補足

あぁ・・・やってしまいました。 我ながらなんて痛いヤツなんでしょう。最低です・・・ ご指摘のとおり、コメント文が不適切だったのが主な原因でした。 ただこのあと修正したものでテストすると「MYSQLの接続に失敗しました」がでました。 iniファイルの情報を直打ちする形で絞っていき、値が正常に読み取れていないと 推測できたのでいろいろ試したところ、「mysql.ini」の文字コードを「utf-8」から「sjis」に変更することで無事接続できました。 なぜ「utf-8」ではいけなかったのかは不勉強なのでわかりませんが、とりあえずはこれで進めることができるようになりました。 なぜエラーメッセージがでないのか、なぜincludeで処理が途切れてしまうのかという点で自分の知識の及ばない範囲の不具合かもしれないと、勝手に舞い上がってしまいました・・・ 確かにコメント文はコピペでアップロード前にいい加減に付け足した覚えがあります。 エディタ機能の色分けで気づきそうなものですが、完全な思い込みで盲目になってました。 この問題にご協力頂き、真剣に考え時間を費やして下さった皆様本当に申し訳ありませんでした。 皆様の丁寧なご指摘で問題点以外でもいろいろ参考になりました。 ありがとうございました。

その他の回答 (3)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

DB classを作るならDB操作を全てclass内に実装しないとやりにくくないですか。 PEAR/DBとかPDOとか既存のものを使うのはだめでしょうか。

mapple55
質問者

お礼

ご協力ありがとうございました。

mapple55
質問者

補足

的外れの返答だったならすいません。 元々のサンプルコードは以下のようなDB操作をまとめてやるものでしたが 問題箇所を探す上でコードを改変し、また質問する上でその方がゴチャゴチャせずに理解して頂けると思ってこちらに載せました。 最初はmysql.iniも同一ディレクトリに用意してテストしていたのですが、うまくいかなかったので直接コード内に書くようにし、さらに関連の薄いコードを削っていきました。 この間、エラーメッセージはなかったように思います。 PEAR/DBとかPDOはまだ知識としてないのでわかりません。 このサンプルのやり方で出来たなら次のステップでもテキストを参考に進められるのでできる限りこのやり方での解を知りたいと思っています。 ■mysql.php <?php /=============================================== / ■:MySQLクラス /=============================================== class MySQL{ /----------------------------------- / □:変数宣言 /----------------------------------- var $m_con; var $m_HostName = ""; var $m_UserName = ""; var $m_Password = ""; var $m_Database = ""; var $m_rows = 0; /----------------------------------- / □:コンストラクタ /----------------------------------- function MySQL(){ $filename = "mysql.ini"; if (!file_exists($filename)){ die("mysql.iniファイルが見つかりません"); }else{ $fp = fopen($filename,"r"); if (!$fp){ die("mysql.iniファイルが見つかりません"); }else{ $this->m_HostName = trim(fgets($fp)); $this->m_UserName = trim(fgets($fp)); $this->m_Password = trim(fgets($fp)); $this->m_Database = trim(fgets($fp)); } fclose($fp); } //MYSQLへ接続 $this->m_con = mysql_connect($this->m_HostName, $m_UserName, $m_Password); if (!$this->m_con){ die("MYSQLの接続に失敗しました"); } if(!mysql_select_db($this->m_Database, $this->m_con)){ die("データベースの選択に失敗しました"); } } /----------------------------------- / SQLクエリ処理 /----------------------------------- function query($sql){ $this->m_rows = mysql_query($sql, $this->m_con); if (!$this->m_rows){ die("MYSQLでエラーが発生しました<br><b>{$sql}</b></br>".mysql_errno().";".mysql_error()); } return $this->m_rows; } /----------------------------------- / SQLクエリ処理 /----------------------------------- function fetch(){ return mysql_fetch_array($this->m_rows); } /----------------------------------- / SQLで変更された行数を取得 /----------------------------------- function affected_rows(){ return mysql_affected_rows(); } /----------------------------------- / 列数取得 /----------------------------------- function cols(){ return mysql_num_fields($this->m_rows); } /----------------------------------- / 行数取得 /----------------------------------- function rows(){ return mysql_num_rows($this->m_rows); } /----------------------------------- / 結果の開放 /----------------------------------- function free(){ mysql_free_result($this->m_rows); } /----------------------------------- / MYSQLをクローズ /----------------------------------- function close(){ mysql_close($this->m_con); } /----------------------------------- / SQLエラー情報(No.+ msg) /----------------------------------- function errors(){ return mysql_errno().": ".mysql_error(); } /----------------------------------- / SQLエラーNo. /----------------------------------- function err_no(){ return mysql_errno(); } } ?> ■test.php <?php require_once("mysql.php"); ?> <html> <head> <meta http-equive="Content-type" content="text/html; charset=utf-8"> <title>SQLtest</title> </head> <body> *** DB/SQLテスト *** <?php $mysql = new MySQL; $sql = "SELECT * FROM staff"; $mysql->query($sql); while($row = $mysql->fetch()){ echo $row["id"]; echo $row["name"]; echo "<br>"; } ?> </body> </html>

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

> while($row = mysql_fetch_array($this->m_rows)){ $this が間違いでは? display_errors と error_reporting の設定を変更して エラーを表示すればエラーが出ませんか?

mapple55
質問者

補足

$thisの部分は書き換えましたが結果は変わりませんでした。 アドバイス頂いたエラー表示に関してはよくわからないのですが、 (info.phpで設定を調べたところdisplay_errors=on , error_reporting=81 でした) もともと各処理ではdieを使ってエラー表示するようにしていましたが、 実行しても何も表示されませんでした。 実行すると「*** DB/SQLテスト ***」が表示されるだけで ソースを見ても以下のようにインクルード直前で途切れています。 <html> <head> <meta http-equive="Content-type" content="text/html; charset=utf-8"> <title>SQLtest</title> </head> <body> *** DB/SQLテスト ***<br>

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

とりあえず while($row = mysql_fetch_array($this->m_rows)){ は while($row = mysql_fetch_array($mysql->m_rows)){ じゃないですかね?

mapple55
質問者

お礼

ご協力ありがとうございました。

mapple55
質問者

補足

早速ありがとうございます。 指摘の箇所を修正して実行してみましたがやはり結果は変わりませんでした。 mysql_fetch_arrayの部分はもともとmysql.php内で関数化されているのを 呼び出すコードだったのですが、なるべく問題箇所をDB接続くらいにまで 絞って示したかったので自分で中途半端に書き換えてしまったものでした。 すいません。

関連するQ&A

  • ボタンのonclick時における関数コールの仕方

    下記のPHPスクリプトにおいて、updateMemo()関数の中で、テストで、 echo 'in update'; として、関数内に入ったら、文字列表示をするようにしているのですが、 更新ボタンを押しても、updateMemo()関数の中に入ってきません。(in update が表示されません) 関数のコールの仕方が、onclick=の部分でまちがっているのでしょうか? 教えていただきたいです。 <?php ////////////////////////// // メモ内容の閲覧、更新 // ////////////////////////// $sid = (int)$_GET['sid']; var_dump($sid); $con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("*****-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8;"; mysql_query($sql); $sql = "SELECT * FROM ideamemo_table WHERE sid=$sid;"; $result = mysql_query($sql, $con) or die(mysql_error()); $row = mysql_fetch_row($result); mysql_close($con); //$row[0] = (int)$row[0]; // string⇒int にキャスト echo '<form name="form1" method="POST" action="deleteUpdate.php">'; echo '内容<br>'; echo '<textarea name="textarea" cols="100" rows="30">'.$row[3].'</textarea>'; echo '<br>'; echo '<input type="button" value="更新" onclick="<?php updateMemo('.$sid.');?>">'; //echo '<input type="button" value="更新" onclick="updateMemo();">'; echo '<input type="button" value="削除" onclick="deleteMemo('.$sid.');">'; echo '<input type="button" value="トップページへ" onclick="location.href=\'main.php\'">'; echo '</form>'; var_dump($row[2]); function updateMemo($sid){ //function updateMemo(){ echo 'in update'; // var_dump($sid); // exit; date_default_timezone_set("Japan"); $update = date(Y年m月d日(D)H時i分s秒); $textarea = $_POST['textarea']; var_dump($textarea); var_dump($update); $con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8;"; mysql_query($sql); $sql = "UPDATE ideamemo_table SET contents = '$textarea', update_date = '$update' WHERE sid=$sid;"; $result = mysql_query($sql, $con); mysql_close($con); // header("Location: main.php"); } function deleteMemo(int $sid){ echo 'in delete'; $con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8;"; mysql_query($sql); $sql = "DELETE FROM ideamemo_table WHERE sid=$sid;"; $result = mysql_query($sql, $con); mysql_close($con); // header("Location: main.php"); } ?>

    • ベストアンサー
    • PHP
  • php 投票システム

    データベースと連動した投票システムを考えております。 phpとMySQLを使用したもので、対応するボタンを押すと1票投じられるというものです。 この仕組み自体は実現できたのですが、 ブラウザの更新ボタンを押すと、『情報を再送信する必要があります』と表示され、『はい』を押すと、自動的に1票投じられてしまいます。 スクリプトは以下のようになるのですが、上記のような不具合を修正するためにはどうすればよいのでしょうか。 アドバイス、具体的なソース、また、他の部分における修正すべき箇所など、ご指摘いただきたいと思います。 よろしくお願いいたします。 <?php echo "<table border=0>"; echo "<tr><td colspan=4 align=left><img src=logo-touhyou.gif></td></tr>"; echo "<tr><td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=posi><input type=image src=logo-posi-s.gif border=0></form></td>"; echo "<td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=deep><input type=image src=logo-deep-s.gif border=0></form></td></tr></table>"; $posi=$_POST["posi"]; $deep=$_POST["deep"]; if ($posi==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res=mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $row_con=mb_convert_encoding($row["posi"], "shift_jis", "auto"); echo $row_con; echo "<br>"; $number1=1; $after=$row_con+$number1; echo $after; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql_1="UPDATE test SET posi='$after3' WHERE id =1 LIMIT 1"; $ins=mysql_query($sql); mysql_query("UNLOCK TABLES"); if ($ins_1){ echo "ポジティブ投票完了"; } $sql_2="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res_2=mysql_query($sql_2); while($row_2 = mysql_fetch_assoc($res_2)) { $row_con_2=mb_convert_encoding($row_2["posi"], "shift_jis", "auto"); echo $row_con_2; } } mysql_close($conn); } if ($deep==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql2="SELECT deep FROM test WHERE id =2 LIMIT 1"; $res2=mysql_query($sql2); while($row2 = mysql_fetch_assoc($res2)) { $row_con2=mb_convert_encoding($row2["deep"], "shift_jis", "auto"); echo $row_con2; echo "<br>"; $number1=1; $after2=$row_con2+$number1; echo $after2; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql2_2="UPDATE test SET deep='$after2' WHERE id =2 LIMIT 1"; $ins2=mysql_query($sql2_2); mysql_query("UNLOCK TABLES"); if ($ins2){ echo "ディープ投票完了"; } $sql2_2="SELECT deep FROM test WHERE id =4 LIMIT 1"; $res2_2=mysql_query($sql2_2); while($row2_2 = mysql_fetch_assoc($res2_2)) { $row_con2_2=mb_convert_encoding($row2_2["deep"], "shift_jis", "auto"); echo $row_con2_2; } } mysql_close($conn); } ?>

    • ベストアンサー
    • PHP
  • classについて

    $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; $con = mysql_connect ($server, $user, $pass); mysql_select_db ($database, $con); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($result = mysql_fetch_array ($rs, MYSQL_ASSOC)) { echo $result[hoge]; } 上記と同じことを下記のようなクラスにして db.php class db { $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; function __construct() { $this->con = mysql_connect ($this->server, $this->user, $this->pass); mysql_select_db ($this->db, $this->con); } function query($sql){ $rs = mysql_query ($sql); return mysql_fetch_array ($rs, MYSQL_ASSOC); } hoge.php $db = new db(); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($db->query($sql)) { echo $result[hoge]; } のようにしたのですが、うまくいきません。 function query($sql){ $rs = mysql_query ($sql); $result = mysql_fetch_array ($rs, MYSQL_ASSOC); } とすると一行はとれるのですが、複数行とるにはどうしたらいいのでしょうか・・・ どうかよろしくお願いします。

    • 締切済み
    • PHP
  • MYSQL、PHPを使ってのデータとそのデータ数表示について

    よろしくお願いいたします。 このようなテーブルを組んでいます。  game        maker  マリオ      任天堂  カービィ     任天堂  FF        スクエニ   ドラクエ     スクエニ  ソニック     セガ このテーブルを使って、  任天堂(2)  スクエニ(3)  セガ(1) というように、メーカーが作ったゲームの数がカッコ内ででるように、makerを並べたいと思っています。 これはどのように組んだらよいのでしょうか? ちなみに、今はこのように組んで、(もちろんですが)失敗しています。。 ---------------------------------------------------------------- <?php mysql_connect('***','***','***'); mysql_select_db('***'); $sql = "select * from test"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo $row["maker"]; echo "<br />"; } } ?> ---------------------------------------------------------------- 初歩的な質問で大変恐縮ですが、よろしくお願いいたします!

    • ベストアンサー
    • PHP
  • データベース表示結果のデザイン

    データベースの全件検索結果の表示のデザインをしたいと考えているのですがうまくいきません。 PHPのソースは以下の通りです。 <?php mysql_connect('localhost','root','******'); mysql_select_db('AAAAAAAA'); $sql= "select * from ??????"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["renban"]; echo " "; echo $row["tourokubi"]; echo " <br />"; echo $row["title"]; echo " "; echo $row["A"]; echo "-"; echo $row["B"]; echo " "; echo $row["C"]; echo " "; echo $row["D"]; echo " "; echo $row["E"]; echo " "; echo $row["F"]; echo " "; echo $row["G"]; echo "</p><hr />"; } } ?> この検索結果の1つ1つのデータをテーブルで囲んでechoで呼び出したA~Gまでの項目を<tr>や<td>で区切って表のような形にしたいのですがどのようにすればいいでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP+MySQLを実行するとエラーが出てパソコンがフリーズする。

    次のphpを実行すると、求めるデータは表示出来ますが、その下に引き続き Warnning:mysql_result()[function.mysql_result]: Unable to jump to row 7 on MySQL result index 3 in C:****test.php on line 10; 同文で on line 11; 以下,Unable to jump toの 「 row 7」 が row 8 row 9・・・・・・ と延々と続き、パソコンがフリーズしてしまいます。 実行したphp文。 <?php $con=mysql_connect(localhost,"root","root"); $selectdb=mysql_select_db("sales",$con); $sql="select * from sample"; $result=mysql_query($sql,$con); $row=mysql_fetch_array($result); $price=mysql_result($result,$i,1); $volume=mysql_result($result,$i,2); echo("$price:$volume<br>\n"); mysql_close($con); ?> 参考書を調べて、いろいろ変えてみましたが、分かりません。 幼稚なphp文で恐縮ですが、悪いところをご指摘頂ければ有難いです。

    • ベストアンサー
    • PHP
  • GETメソッド ID MYSQL

    分からないことがありましたのでご質問をさせて頂きます。 現在作成してる仕様なのですが、 フォームの一つの項目のリンクを設置し、別のページに渡し そこで更に詳細な情報をMYSQLからひっぱってきて表示させようとしております。 そこでGETメソッドを使って行おうとしているのですが、どうしても 変数の受け渡しがうまくいきません。 こちらがそのコードになります。 1,フォーム <td><a href="shousai.php?code=<?php echo $row['id'];?>">詳しくはこちら</a></td> 2,詳細ページ(shousai.php) <?php echo var_dump($_GET["id"]); $id = $_GET["id"]; $con = mysql_connect('localhost','aaaa','aaa'); if (!$con) { print("MySQLへの接続に失敗しました"); exit; } if (!mysql_select_db("database")) { print("データベースへの接続に失敗しました"); exit; } $sql="select * from table where id ='$id'"; $result=mysql_query($sql,$con); //SQL文の発 $rows=mysql_num_rows($result); while($row = mysql_fetch_array($result)){ ?> <table border ="1"> <tr><td><?php echo $row["name"]; ?></p></td></tr> <tr><td><?php echo $row["address"]; ?></td></tr> <tr><td><?php echo $row["station"]; ?></td></tr> <?php } ?> </table> 2の詳細ページにてvar_dumpで$_GET["id"];の値を受け取ってるか 確かめたのですがNULLになっており、ページになにも反映されません。 フォームからリンクで値を送り、それをきっかけにデータベースに接続して詳細を表示させたいと思っております。 どなたかご存知の方お伺いできませんでしょうか?

    • ベストアンサー
    • PHP
  • MySQLとPHP(HTML)の連携について

    送信側では、PHP(HTML)下記のように書きました。 ----------------------------- <form action="input.php" method="post"> ボタン1:<input type="submit" name="input" value="入力">   ボタン2:<input type="submit" name="input2" value="入力"> </form> ----------------------------- 受信側(input.php)は下記のように書きました。 ----------------------------- <?php $url = "***.sakura.ne.jp"; $user = "abc"; $pass = "12345"; $db = "sakura_db"; if (isset($_POST["$input"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN"; }elseif (isset($_POST["$input2"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN2"; } //Connect MySQL Server $my_Con = mysql_connect($url,$user,$pass); mysql_query("SET NAMES utf8",$my_Con); if ($my_Con == false){ die("MySQL Server接続に失敗しました。"); } //Connect MySQL DataBase if (!mysql_select_db($db,$my_Con)){ die("MySQL DataBase選択に失敗しました。"); } //MySQL Deta Read $my_Row = mysql_query($sql,$my_Con); if (!$my_Row){ die(mysql_error()); } $a = 1; while ($row = mysql_fetch_array($my_Row) or $a <= 50) { echo ' <p>'; echo ' A'.$a.':<input name="date" type="text" size="4" value="'.$row["a"].'">'; echo ' B'.$a.':<input name="date" type="text" size="4" value="'.$row["b"].'">'; echo ' C'.$a.':<input type="checkbox" name="example"'.check($row["c"]).'>'; echo ' D'.$a.':<input type="checkbox" name="example"'.check($row["d"]).'>'; echo ' </p>'; $a++; } //Close MySQL Server $my_Con = mysql_close($my_Con); if (!$my_Con) { exit("MySQL Server閉じられませんでした。"); } ?> ----------------------------- この状態で送信側のボタンをクリックすると、input.php側では”Query was empty”とエラーがでます。 送信側の2つあるボタンによって表示されるテーブルを変えたいのですが、何が原因なのでしょうか? そもそもSQLの内容をif文での条件分岐は出来ないのでしょうか? 最近PHPを勉強し出した初心者です。 出来れば分かりやすく教えていただけないでしょうか。 よろしくお願い致します!

    • ベストアンサー
    • PHP
  • PHPについて。

    PHPで占いを作っているのですが、ランダム表示にするにはどうすればいいですか。 <html> <head> <title>入力フォーム</title> </head> <body> <center> <?php //接続 $link = mysql_connect("○○○","○○○","○○○"); if(!$link){ die('Connected error !'.mysql_error()); } //DB選択 $db_selected = mysql_select_db('○○', $link); if(!$db_selected){ die('Connected error !'.mysql_error()); } //フォーム入力文字を表現 $○○= $_POST['name']; /* echo $○○.'<br>'; */ //ハッシュ値の取得 $hash = crc32($○○); if($hash < 0){ $hash = 0 - $hash; } /* echo $hash; */ $result = mysql_query("SELECT ○○") or die("sql error !"); $retukazu = mysql_num_rows($result); $kekka = $hash % $retukazu + 1; //文字コード設定 mysql_query("SET NAMES sjis"); $sql = mysql_query("SELECT ○○ = $kekka"); if(!$sql){ die('query_error !'.mysql_error()); } while($row = mysql_fetch_assoc($sql)){ echo '<center><br />あなたはきっと・・・<br /><br /><font color= "Red"><strong>'.$row['Memo'].'</strong></font>です<br />'; } ?> </p> </body> </html>

    • ベストアンサー
    • PHP
  • phpでmysqlで作成したdbを表示したい。

    現在phpのプログラムの学習を行っています。、 phpmyadminで作成したデータベースを読み込もうとしているのですが、うまくいきません。 参考書やサイトも参考にしたのですが、警告が出ています。 よくわからなくなってきましたので、教えていただきたいです。 ------------------------------------------------------------------------------- ・実行結果 Resource id #31Resource id #40 接続ID: 選択の成否: 結果ID: 行数: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\job\job.php on line 45 ------------------------------------------------------------------------------- ・ソース <?php /*$con = mysql_connect('localhost','root','root') or die("接続できません"); print "接続に成功しました。"; mysql_close($con);*/ $url = "localhost"; $user = "root"; $pass = "***"; $db = "***"; // MySQLへ接続する $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。"); // データベースを選択する $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。"); // クエリを送信する $sql = "SELECT * FROM t01prefecture"; $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //結果保持用メモリを開放する mysql_free_result($result); echo "$link"; echo "$sdb"; echo "$result"; echo "$rows"; echo "<br>"; echo "接続ID:<?= $link ?><br />"; echo "選択の成否:<?= $sdb ?><br />"; echo "結果ID:<?= $result ?><br />"; echo "行数:<?= $rows ?><br />"; $recordSet = mysql_query('SELECT * FROM my_items'); while($data = mysql_fetch_assoc($recordSet)){ /*このあたりが45行目 */ echo $data['item_name']; /* ここの値を変える*/ echo '<br>'; } // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。");

    • ベストアンサー
    • PHP