Windows7のMySQLの環境構築について

このQ&Aのポイント
  • Windows7でのMySQL環境構築に関して困っています。localhostでのページ表示ができず、ローカル環境での使用に制限されています。PHPとMySQLの接続は正常に行えますが、MySQLのデータを取得しルックアップメニューに表示する際に問題が発生し、エラーも起きます。どう解決すればいいでしょうか?
  • Windows7のlocalhostでの問題により、MySQLのデータをルックアップメニューに表示できません。接続は正常に行えるため、設定やセキュリティの問題だと考えられますが、具体的な解決策が分かりません。初心者向けの指導をお願いします。
  • Windows7環境でのMySQLの環境構築で問題が発生しています。ローカル環境でのページ表示ができないため、制限された使用環境となっています。PHPとMySQLの接続は成功しており、データの取得もできますが、ルックアップメニューでMySQLのデータを表示する際に問題が生じ、エラーが発生してしまいます。問題の解決策を教えてください。
回答を見る
  • ベストアンサー

Windows7のMySQLの環境構築について

はじめまして、私は、本業は3DCGで趣味でWeb系のツール開発をしている者です。 localhostでうまくページを表示できなくて困っています。 作っているものがCG用の開発ツールで外部に公開するものではなく、 ローカル環境のみでの使用になります。 開発環境はwindows7 64bit PHP5.3.23 Apache2.2 MySQL5.5になります。 個人で取得しているドメインのサーバーにデータをアップして見ると正常にページが 表示されますので記述したコード自体には問題はなさそうです。 昔WindowsXPで構築したマシーンのlocalhostでも正常表示されます。 以下、Windows7のlocalhostでの挙動になりますが、 (1)phpinfoのページは正常に表示されます。 (2)PHPからのMySQLへの接続とデータの取得もうまくいきます。 (3)しかし、MySQLのデータを取得し、formのselectを用いて <option value='<?=$c[$i]?>'><?=$c[$i]?></option> と記述するとルックアップメニューには空文字が入力されてしまいます。 (4)そこであえて(3)の記述を <<option value='<?php echo $c[$i]?>'><?php echo $c[$i]?></option> のように書くとなんとかメニューにMySQLのデータが入ってきます。 (5)しかし、以下のように $cate=$_GET[cate];  などのような文を記述するだけでエラーが起きてしまいまして どう対処してよいかわかりません。 localhost環境で何か設定すべきところをしていないのか、 windows7のセキュリティの問題なのかわかりませんが、 どうしたら解決しますでしょうか。 当方、Web系は中規模ネットショップを独学で構築したレベルで実務経験はありません。 そのため難しい表現をされると理解できませんので、 あくまで初心者むけということで指導していただけると幸いです。

  • haaar
  • お礼率100% (2/2)
  • MySQL
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

MySQLじゃなくてphpの問題でしょう。 (3)は、phpの short_open_tag がoff なのでしょう。 php4 時代は、default on だったけど、php5 になってからは、default off です。 <?php で開始するように書き換えた方が今後も無難だと思います。 (5) は、まだ、$_GET[] を受け取ってないから、変数(または連想配列キー)が存在しないというwarning でしょう。 isset() で存在確認してから使って下さい。 上記は、php version upによるセキュリティ設定改善の結果です。 ネットショップ構築するなら、なおさらセキュリティに気を使って下さい。

haaar
質問者

お礼

ご回答ありがとうございます、 short_open_tagは知らなかったので助かります。 どうもlocalhostでうまく表示されないのは PHPのiniファイルのデータの読み取りがうまくいっていないのが原因のようです。 short_open_tagを有効にしたにもかかわらず、 phpinfoのページを開くとオフのままでした。 ApacheのconfファイルでのPHPIniDirの設定はしてあるのですが…。 状況を整理して再度質問を挙げるつもりですので、 またご尽力いただけると幸いです。 ネットショップは練習で作ったのみで今は扱っていないので大丈夫です。 現在は、音源管理や映像のシーン分析ツールの作成をしております。 なので外部公開はせずlocal環境で個人的に使うのみになります。 ありがとうございました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 3)しかし、MySQLのデータを取得し、formのselectを用いて > <option value='<?=$c[$i]?>'><?=$c[$i]?></option> $c[$i]? 突然これを示されても、何のことやら。 DBから取得しているなら、そのDBからSELECTする部分があるはず。 MySQLのコマンドラインでSQL文を実行して、意図した結果を得られているのしょうか? #文字コード設定がうまく行ってのかな?(UTF-8とS-JIS)

haaar
質問者

お礼

ご回答ありがとうございます。 $c[$i]はwhile文でmysqlのデータを順に配列に格納した変数になります。 わかりにくくてすいませんでした。 文字コードはPHPのiniファイルではutf-8にしているのに phpinfoで調べるとEUC-JPになっており実はちょっと不安があります。 データ入力にはコネクタを用いてAccessからCP932のキャラクタセットで データを打ち込んでいます。 phpinfoの値がEUC-JPであるところがちょっとひっかかっています。 ここがutf-8の環境の別のマシーンでは正常にページが表示されています。

関連するQ&A

  • LinuxでPHPからMysqlを接続できない

    どなたかご存じの方がおられましたら宜しくご回答をお願い致します。 PHPからMysqlを呼び出し、データーベースを使用しておりましたが、トラブル(停電でシステムクラッシュ)のため再構築しましたが旨く動きません。 1.PHP単体では正常に稼働している。   php.infoが正常表示される。   自作のPHPプログラムも正常に動作している。 2.MySqlも単体では正常に稼働しており、コマンドでデータやテ ーブルも表示される。 3.PHPから以前はMySqlが接続できていたのに、今は接続不   可。(停電でLinuxシステムが壊れたので、バックアップして  おいたバックアップディスクでリカバリーを行った。) 4.Linuxのブラウザから、localhostで内部のHTMLやPHPファイルが「Object not found Error 404」でみられない。 5.Mysqlサーバー名の「localhost」が認識できていないように思われる。 6.# nslookup localhost では、127.0.0.1 は表示される。    ping localhost もOKです。 7.システムが壊れる前は全て正常に稼働していました。 8.PHP,MySqlその他の設定ファイルは、以前の正常稼働時の設定ファイルを使用している。   以上細々と書きましたが宜しくお願い致します。

  • MySQLの接続について教えてください。

    こんにちわ。初心者です。MySQL5 の接続を php5、Apache2、windowsXP を使用して接続したいのですが、 できず困っております。Apacheとphpの相互の設定はできています。セキュリティソフトは念のため止めました。 phpとMySQLの設定がどこかが違うのではないかと思うのですが、 良くわからないのでどなたかアドバイスを宜しくお願いします。 <?php $host=\"aaa\";$name=\"ccc\";$pass=\"ddd\"; $con = mysql_connect($host,$name,$pass); if($con !== false){echo\"ok\";}else{echo\"falsess\";}?> という文をアパッチで表示させると、 Warning: mysql_connect() [function.mysql-connect]: Access denied for user \'ccc\'@\'localhost\' (using password: YES) in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\php\\lesson.php on line 2 falsess

    • 締切済み
    • PHP
  • MySQLでデータ表示

    MySQLでデータの表示を行っています 10件ずつ表示し、11件からは2ページ目に表示したいです サイトや本を見ながらデータ表示と次の10件のリンクは表示されるよう自力で頑張ったのですが 次の10件を押してもデータが変わらず1件目から10件目のままです どこが違うか教えてもらえますか。 どうコードを入力するか教えてくれたらありがたいです 一覧 ta2.phpです <html> <body> <form action = "ta2.php" method="GET"> <input type="hidden" name="page" value="0"> </form> <?php //データベースに接続 if (!$con = mysql_connect("localhost", "root", "admin")) { echo "接続エラー" ; exit ; } //データベースを選択 if (!mysql_select_db("db_test", $con)) { echo "データベース選択エラー" ; exit ; } //LIMITを使ったSELECT文を作成 $sql = "select * from tbl_test" ; $sql.= " limit " . $page*10 . ", 10" ; //SQL実行 if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } //検索結果表示 echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> <th>操作</th> </tr>"; while($row = mysql_fetch_array($res)) { $ID = htmlspecialchars($row['番号']); $NAME = htmlspecialchars($row['氏名']); $ADDR = htmlspecialchars($row['住所']); echo "<tr> <td>$ID</td> <td>$NAME</td> <td>$ADDR</td> <td><a href='edit.php?番号=$ID'>修正</a> <a href='delete.php?番号=$ID'>削除</a></td></tr>"; header('content-type: text/html; charset="utf-8"'); if ($_GET) { // データがGETされていたら $page = isset($_GET['page']) ? $_GET['page'] : ''; // 取得 } } $sql = "select count(*) from tbl_test " ; if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } $row = mysql_fetch_array($res) ; $cnt = $row[0] ; //ページ表示 if(!$cnt > 10) echo ceil($cnt / 10), "ページの中の", $page + 1, "ページ目を表示<br>" ; //前の10件 if ($page != 0) { echo "<a href = ta2.php?page= $page>" ; echo "&lt 前の10件" ; } //次の10件 if (($page + 1)*10 < $cnt) { echo "<a href = ta2.php?page= $page>" ; echo " 次の10件 " ; } //結果セットの開放 mysql_free_result ($res) ; //データベースから切断 mysql_close($con) ; ?> </table> </body> </html>

    • ベストアンサー
    • MySQL
  • PHPとMySQLで作ったプログラムについて

    PHP(Ver.5.2.5)とMySQL(Ver.5.0.45)で住所録プログラムを作りました。住所は登録できるのですが、PHPで住所録を表示すると新規登録分が表示されません。住所録登録プログラムではmysql_close文でDBをちゃんと終了しています。コマンドラインクライアントのselect*from文では新規登録分が1回でちゃんと表示されることと、住所録表示プログラムでブラウザーの更新ボタンをクリックすると新規登録分が表示されることから、住所録表示プログラムがおかしいのではないかと思い、いろいろ試したのですが、変わりません。住所録表示プログラムのスクリプトの一部を以下に示します。 <?php mysql_connect('localhost','root'); *rootパスワードは設定していません。 mysql_select_db('lesson'); $sql = 'select * from jushoroku'; $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 ・・・ } } ?> 新規登録分を1回で表示するにはどこを直せば良いのでしょうか。どなたか教えてください。

    • ベストアンサー
    • PHP
  • MySQL接続・カテゴリわけ

    MySQLで下記のようににテーブルを作成しました。 +----+------+------+-------+ | id | name | age | add | +----+-------+-----+-------+ | 01 | 名前1 | 20 | 住所1 | | 02 | 名前2 | 20 | 住所2 | | 03 | 名前3 | 35 | 住所3 | | 04 | 名前4 | 21 | 住所4 | | 05 | 名前5 | 21 | 住所5 | | 06 | 名前6 | 20 | 住所6 | +----+-------+-----+-------+ これをPHPで接続し、年齢別で整理したいのですが、 どのようにしたらいいのかわかりません。 現在は下記のように記述し、SQLのデータを配列に入れ、 その配列を分解して年齢別に分ける・・・といったやり方を行っていますが、 これだとMySQLの意味がないような気がします。 もっと簡単に年齢別でわけることは可能でしょうか。 $rs = mysql_query("select * from test order by age" , $conn); $i = 0; while($rec = mysql_fetch_array($rs)){ $cate_only[] = "$rec[age]"; //年齢のみの配列を作成 $arr_cate_only = array_unique($cate_only); //年齢のみの配列から同じものを削除 $arr_cate_only = array_values($arr_cate_only); //年齢のみの配列を再度作成 $count_cate = count($arr_cate_only); //年齢が何個あるかカウント ・ ・ ・ } 具体的には下記のような感じでページを表示したいです。 年齢別で表示しています。 年齢「20」 ┣名前1 ┣名前2 ┗名前6 年齢「21」 ┣名前4 ┗名前5 年齢「35」 ┗名前3

    • ベストアンサー
    • PHP
  • 『MySQL』どこがまちがってますでしょうか?!

    <table> <tr> <th>name</th> <th>telno</th> </tr> <?php if( ! $db = mysql_connect( 'localhost', 'ユーザー名', 'パスワード') ){ die( ’MySQL接続失敗' ); mysql_select_db('test', $db ); $sel = mysql_query('SELECT name,telno FROM phone'); while ($row = mysql_fetch_array ($sel)) { echo "<tr>"; echo " <td>".$row["name"]."</td>"; echo " <td>".$row["telno"]."</td>"; echo "</tr>"; } mysql_free_result ($sel); mysql_close($db); ?> </table> 上記のソースを自分のレンタルサーバーに置いてみてアクセスしたところ 何も表示されません。 何がおかしいでしょうか? 状態   ・Win MYSQLLadmin 1.4が起動していて青信号状態    このソフトの中では PC名   Ltest Lphone (コマンドプロンプトからは mysql> select * from phone; で中にデータは入っていることが確認できた。    ・サーバーはPHP可。(MySQL可でないとダメ?!)) 何がおかしいんでしょ?! 自分で考える不安要素は、 PHPは<?php ~?> で挟むんで使うことは先日知ったばかりですが、PHP自体が動いてるはずと仮定してます。 またこのphoneのテーブルの中身はMySQLのサーバーに格納されてるのでしょうか?! それとも自分のPCのローカル?! PLEASE H E L P M E !!!

    • ベストアンサー
    • MySQL
  • PHP環境を構築中です。

    PHP環境を構築中です。 ネットで文献を見ながら設定を行い、 サーバ上でhttp://localhost/phpinfo.phpと指定して phpinfo()をブラウザに表示する事までできたのですが、 クライアントから、http://localhost/phpinfo.phpでは表示できません。 localhostの代わりにIPアドレスを入力すれば表示する事ができます。 きっとDNSの設定をどこかでしなければならないのだと思うのですが、 どこでどのような設定をすれば良いでしょうか? DNSサーバは別立てで持っています。 ドメインの部分は「appweb」としたいのですが、ドメイン取得は行っていません。 社内環境で使用する場合でもドメインの取得は必要なのでしょうか? php:5.2.12 apache:2.2.14 SVOS:WinXP FTP:TinyFTPDaemon Ver0.52b

  • Mysql UPDATE出来ません

    PHP+MySQLでホームページ開発中ですが、MySQLで特定idのフィールドの更新処理(UPDATE)が出来ません。初心者です宜しくお願いします。 【Mysqlで確認した点】 (1)XAMPP・MyAdminからは以下のSQL文で問題なく更新できる。 "UPDATE upload_list SET rem='ABCDEF' WHERE id=15;" 【問題は?】 以下のphpからは更新できません。 【phpで確認した点は?】 (1)DBへ正常に接続してる。 (2)文字コードも正常にSETしてる。 (3)UPDATE実行後の$RESULT(返り値)がない。 (4)PHPを実行後、MyAdminでDBを確認しても更新されていない。 【phpコード】 <?php //データベースパラメータ定義 $DBSERVER="localhost"; $DBUSER="root"; $DBPASSWORD=""; $DBNAME="up_load"; $DATANAME="upload_list"; //Mysqlに接続 if(mysql_connect($DBSERVER,$DBUSER,$DBPASSWORD)) {echo "DB接続済/";} else {echo "<h2>データベースに接続できません</h2>";die();} //Mysql停止 //データベースを選定 mysql_select_db($DBNAME); //Mysqlの文字セットを定義 $sql = "SET NAMES ujis;"; $result = mysql_query($sql); if ($result==true){echo "文字コードSET済/";} //更新id、rem(更新記事)をSET $id=15; $new_rem="ABCDEF"; echo $DATANAME."/".$id."/".$new_rem."/"; //Mysql更新処理 $result=mysql_query('UPDATE $DATANAME SET rem=$new_rem WHERE id=$id;'); if ($result==true){echo "更新!";} else {echo "更新出来ず";} //XAMMP phpMyAdminからは以下のSQL文で更新できた。 //UPDATE upload_list SET rem='ABCDEF' WHERE id=15; ?> 【実行後のブラウザ表示】 DB接続済/文字コードSET済/upload_list/15/ABCDEF/更新出来ず

    • ベストアンサー
    • MySQL
  • MySQLで昇順に並べ替え

    MySQL(データベース)で商品名と価格を格納したテーブル(syouhin)があります。商品名のキーワードを入力するフォーム(form.html)とデータを受け取る(kensaku.php)があり、以下のようにデータを表示させています。 <!-- form.html --> <html> <head> <title>商品名と価格</title> </head> <body> <form method="get" action="kensaku.php"> <input type="text" name="name"> <input type="submit" name="submit" value="検索"> </form> </body> </html> //kensaku.php <? $name=$_REQUEST["name"]; $conn = mysql_connect ("localhost", "username", "password") or die ('接続できませんでした'); mysql_select_db ("db",$conn); //クエリ生成 $sql = "select * from syouhin where name like '%$name%'"; $res = mysql_query($sql); while($row = mysql_fetch_array($res)){ echo "<table border='1' cellpadding='0' cellspacing='0'>"; echo "<tr>"; echo "<td>".$row[name]."</td>"; echo "<td>".$row[price]."</td>"; echo "</tr>"; echo "</table>"; } ?> ここから質問なんですが、今結果が表示されているまさにそのページで、並べ替えをしたいのです。よく検索結果の並べ替えで、[価格の安い順に並べる]をクリックすると並び変わるのがありますよね。それと同じ事をしたいのです。 僕が考えた方法は、もう一つのページ(例えば、kensaku_asc.php)を作って、 $sql = "select * from syouhin where name like '%$name%'"; の部分だけを $sql = "select * from syouhin where name like '%$name%' order by price"; に変えて、そのページにリンクさせる。でもその場合、form.htmlから受け取ったデータ(ここでは商品名のキーワード)を引き継ぐという事ができないので、そのあたりのところのヒントをいただければと存じます。よろしくお願いします。

    • 締切済み
    • PHP
  • PHPとMySQLを学習しているのですが・・・。

    ----------------- apache2.0.59 php5.24 MySQL5.0.45 ----------------- <?php $my_con = mysql_connect("localhost" , "hamu" , 'hamutamago'); if($my_con == false){ echo "MySQLに接続できました"; }else{ echo "MySQLに接続できました"; }; if(mysql_select_db("sample_sql")){ echo "データベース接続できました"; }else{ echo "データベース接続できませんでした"; } ?> PHPでMySQLと連動させる勉強をいましているのですが、PHPからMySQLへアクセスする事はできたのですが、自分で作成したデータベースへアクセすることができません。最初からMySQLに入っていたinformation_schemaというデータベース(?)にはアクセスできるみたいなのですが、自分で策瀬下データベースにはアクセスが出来ないようです。 なにかご存じのかたがいらっしゃいましたらよろしくお願いします。

    • ベストアンサー
    • PHP