このブログのはてなブックマーク数 このエントリーをはてなブックマークに追加

知らなきゃ絶対損するPCマル秘ワザ

知らなきゃ損するPC情報を分かりやすくメモする個人ブログ。
『月,水,金』の週3回更新!(予定)

このブログ内をキーワードで検索することもできます。
Loading



最新記事
  • Windows:動画のフレームサイズ等をエクスプローラーに表示 (02/24)
  • エクセル:テーブルの「フィルター」「並び替え」ボタンが消えた (02/22)
  • jQuery:追加した「ボタン」をクリックしてもイベントが発火しない (02/20)
  • PCモニタをWQHD(2560x1440)にしたら便利すぎて戻れない件 (02/17)
  • jQuery Mobile:追加した要素(select等)にスタイルが付かない (02/13)
  • 管理人より
    2100万アクセス突破!ありがとうございます。

    PHP と MySQL が繋がらない!

    このエントリーをはてなブックマークに追加
    サーバ管理って難しい(1)

    こんにちは、さちです!

    最近レンタルサーバを触れる機会があったのですが
    ローカル(自分のパソコン上)では起こらない様々なトラブルが起きました。
    私の体験談が少しでも他の方の役に立てばと思い
    定期的にサーバ管理体験談記事を書いていこうと思います。

    PHPMySQL を連携させることによって
    PHP で MySQL上のデータを操作できるようになりとても便利です。
    でも自分一人でサーバの設定をすると結構苦労します。(体験談)
    実際に私は PHP と MySQL を連携する際にちゃんと動作するようになるまで
    丸2日徹夜して48時間という時間を費やしました…orz

    実際には分かってしまえば解決法は特に難しいわけではなく
    なぜこんなかんたんなことに48時間も費やしたのかと悲しくなります。

    私の身に起きたことを説明すると…

    MySQL からデータを取り出す PHPファイルを作成

    ローカルで問題なく動作することを確認

    その PHPファイル をサーバにアップロード

    エラーが出て動かない…orz

    この問題が発生するかどうかはサーバによるみたいです。
    問題解決までの道のりを例題と共に見ていきましょう。

    まず、例題としてこのようなデータベース内に次のようなテーブル[tb1]
    を作成したと仮定しましょう。

    テーブル名: tb1
    japaneseenglish
    レッド
    黄色イエロー
    ブルー

    このテーブルから次のような3つのSQLを使ってデータを取り出してみます。
    • select * from tb1;  … (1)
    • select * from TB1;  … (2)
    プログラムは次のように組みます。

    ファイル名: test.php

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    <?php
    $con = mysql_connect(サーバ名, ユーザ名, パスワード) ;
    mysql_select_db(データベース名);

    mysql_query("SET NAMES eucjpms;");
    $re = mysql_query("SQL",$con);

    echo("<table border=¥"1¥">");

    while($array = mysql_fetch_array($re)) {
       echo("<tr><td>".$array[0]."</td><td>".$array[1]."</td></tr>¥n");
    }

    echo("</table>");
    ?>

    プログラムのSQLの部分に
    先ほどの(1),(2)のSQLを順に入れて実行してみます。

    まず 「(1)select * from tb1;」 です。結果は次のようになります。

    レッド
    黄色イエロー
    ブルー

    ちゃんと実行され表示されました。

    では次に 「(2)select * from TB1;」 を実行してみましょう。
    すると結果は次のようになります。

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ……/test.php on line 10

    エラーがでました。

    エラーって言われるだけでは何が原因でエラーが起こっているのかは分かりにくく
    問題を解決しづらいのでそういうときにはデバッグをします。

    この test.php だと、10~12行目をとりあえず次のように置き換えます。
    (プログラムを変更したくない場合はそのプログラムをコメントアウトしておきます)

    10
    11
    12
    while($array = mysql_fetch_array($re)) {
       echo("<tr><td>".$array[0]."</td><td>".$array[1]."</td></tr>");
    }

    10
    $array = mysql_fetch_array($re) or die("エラー内容:". mysql_error());

    or die() を記述すると or の前の部分でエラーが起きた際に
    die()の内容を実行します。
    mysql_error() は mysql でのエラー内容を教えてくれます。
    実際に(2)で 10~12行目を置き換えたもので実行してみると
    前のエラー内容に追加して次のように表示されます。

    エラー内容:Table 'データベース名.TB1' doesn't exist

    「データベース名の中に TB1 という名前のテーブルはありません。」
    という内容のエラーが表示されます。
    つまりこのエラーの文章から
    SQLの中のテーブル名がおかしいということが分かります。
    この文章がないのとあるのでは大違いですよね。

    (1)と(2)の違いは
    テーブル名を大文字で書いたか小文字で書いたかの違いだけです。
    これだけの差でエラーがでます。

    私の場合、phpMyAdmin を使い半角英数大文字で
    データベースにテーブルを作成したのですが
    あとでよく見たら勝手に小文字に変換して作成されていました。

    小文字に変換したということは大文字も小文字も区別しないのかと思いきや
    区別しているおかげでエラーが出てしまいます。

    気をつけましょう!

    エラーが出なくなったら書き換えた部分は元に戻しておきましょう。

    << 前へ | サーバ管理って難しい(1) | 次へ >>
    サーバ管理って難しいTOPへ









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




    管理人だけが読めるコメントにする(返信はしません)
    【お知らせ】
    • コメントは承認制です。反映に時間がかかります。
    • Yahoo!BBはスパムコメントが多いため一部規制中です。
    • URLを含む投稿はできません。必要な場合は最初のhを削って下さい。
    • 記事に直接関係ない個人のトラブルにはお答えできません。
    • Android は使ったことがないので質問を頂いても答えられません。
    • その他詳細はこちら


    管理人のみ閲覧できます
    このコメントは管理人のみ閲覧できます
    | 2012/04/25/Wed [EDIT]



    記事別の週間アクセス数ランキングです。こちらの記事もぜひ読んでみて下さい。

    2008-2017 知らなきゃ絶対損するPCマル秘ワザ  無断転載禁止

    ブログパーツ