新ブログの該当記事に転送中です。
少々お待ち下さい。
(転送しない場合は下記リンクへお進み下さい)

『PHP と MySQL が繋がらない!』
https://at.sachi-web.com/blog-entry-116.html

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

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

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

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へ




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




ブログ移転に伴い、コメント受付は終了しました。
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
| 2012/04/25/Wed [EDIT]



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

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

ブログパーツ