PHP データを削除する際の cd の受け渡しについて。

【講座名】
PHP初心者入門講座 に関する質問

【質問】
PHPでDB(データベース)からデータを削除する際の、cdの受け渡しについて、ご質問させていただきます。

http://php5.seesaa.net/category/4118446-1.html
上記ページの「delete.php」についてなのですが、
『PREF_CD』の部分に数字だけではなく『abc_01』等のようにアルファベットや記号が入力されていると、『削除』を押した次のページにて

「クエリの送信に失敗しました。
 SQL:SELECT PREF_NAME FROM DB名 WHERE PREF_CD = cd」

とのエラーメッセージが出てしまいます。

恐らく、SQL文のダブルクォーテーション等の追加かと思い、自分が考え付く限りの事をしてみましたが、PHP自体がエラーになるか、上記に書いたエラーメッセージが表示されます。

初歩的な質問かと思いますが、ご助力お願いいたします。

【回答】
講座の手順通りに進めた場合だと、MySQLのテーブルは、以下のSQL文で作成されています。


CREATE TABLE T01Prefecture (
  PREF_CD INT PRIMARY KEY,
  PREF_NAME VARCHAR(10)
);


PREF_CD はデータ型に INT を指定しているので、「整数」しか扱うことができません。

もし文字列を含んだデータを入力したい場合は、 VARCHAR などのデータ型にしておく必要があります。

でも PRIMARY KEY を指定する列(フィールド)は、一意のデータを入力しなければならないので、通常は数値が適しています。数値にすると、自動的に番号を振ることも簡単です。

商品の型番など、数字と文字を混在して入力する場合は、新たに専用の列を追加したほうが無難です。

PHP phpdevをインストールした後のアパッチモニターのエラーについて。

【講座名】
PHP初心者入門講座 に関する質問

【質問】
PHPプログラミング初心者入門講座のページで紹介されていた「PHP phpdev」をインストールいたしました。

「2K-NT-XP-phpdev_start.bat」「www」へのショートカットも作成。

いざ、起動すべく「2K-NT-XP-phpdev_start.bat」をクリックしたら、エラーとして
「apache monitor is already started」
とのメッセージボックスが表示されてしまいました。

どのような意味なのか分からず、調べてみたものの解決方法が見つかりません。宜しければ知恵をお貸し下さい。よろしくお願い致します。

【回答】
apache monitor is already started
とは直訳すると、「アパッチモニターは既に始動されています。」という意味になります。

つまりこのメッセージは、アパッチモニターを起動しているのに、何度も起動しようとした時に表示されます。

可能性としては、
(1)phpdevに含まれている Apache を何度も起動しようとした
(2)phpdev以外に既に Apache がインストールされている
などです。

(1)の場合は、Windowsのタスクバーにアパッチモニターが表示されるので、一度終了してから、「2K-NT-XP-phpdev_start.bat」で phpdev を再起動してください。

(2)は以下の場合が考えられます。
・複数の人でパソコンを共有している
・市販の書籍で勉強する時に、既にApacheをインストールした

複数の人でパソコンを使うと、インストール済みのソフトウェアに、気付かないことがあります。

phpdev 以外に Apache がインストールされている場合は、Windowsの
コントロールパネル → 管理ツール → サービス
で、Apacheが自動的に起動する設定になっていないか、確認してみてください。
(スタートアップの種類の部分)

もし自動になっていたら、手動に変更します。これでWindowsの起動時に Apache が自動的に起動しなくなります。

今回の場合は、恐らく(2)が原因の可能性が高い気がします。

Apache が複数インストールされている場合は、今どの Apache が操作の対象になっているのか、意識するようにしてください。

PHP 文字化けについて。

【講座名】
PHP初心者入門講座 に関する質問

【質問】
「Step2・データベースに接続する」までは何とかいけたのですが、PHPのプログラムを実行して表示した場合に、以下のように文字化けします。


全件表示
47件のデータがあります。
PREF_CD PREF_NAME
1    ???
2    ???
3    ???
4    ???
5    ???


PREF_NAMEが ??? となってしまいます。

もちろんPHPソースなどには問題はありません。県名が正しく出るようにするにはどうしたらいいですか?


【回答】
文字化けの原因は、文字コードの不一致がほとんどです。

1.データベースの文字コード
2.PHPのソースコードの文字コード(保存時の)
3.HTMLのメタタグの文字コード

メタタグの例
<META http-equiv="content-type" content="text/html; charset=Shift_JIS">

これらを全て一致させる必要があります。

試しにWebブラウザのメニューから「表示 → エンコード」で、日本語関連の文字コードをいろいろ変更してみてください。もしこれで正しく表示される文字コードがあれば、原因を特定するヒントになります。

また可能性は低いと思いますが、以下の点にも注意してください。

・MySQLは、データベース、テーブル、フィールドごとに文字コードを指定できます。気を付けないと、異なる文字コードで扱っている場合があります。

・MySQLにデータをインポートする場合は、データベースの文字コードと、インポートするファイルの文字コードを一致させる必要があります。


【お願い】
読者の皆様の個々の環境に対応するのには無理があるので、当講座で学習中だけでも「phpdev」で環境を統一することをおすすめします。

そのほうが問題が発生しにくいし、的確にアドバイスすることができます。

PHPのプログラミングに慣れてから、新しいバージョンの Apache、PHP、MySQL で独自に環境を構築してください。その頃には問題が発生した時に、自分である程度解決できるようになっているはずです。

ちなみに、「phpdev」内にある Apache、PHP、MySQL は、フォルダごと簡単に削除できるので、独自にインストールする場合も影響はありません。

PHP phpdevに含まれている、各アプリケーションソフトのバージョンについて。

【講座名】
PHP初心者入門講座 に関する質問

【質問】
phpdev に含まれているアプリケーションソフトのバージョンについて教えてください。

【回答】
PHP初心者入門講座で利用しているのは「phpdev423.exe」です。

phpdev423.exe をインストールすると、Apache、PHP、MySQL の3つがすぐに使える状態になります。phpdev は初心者でもほんの数十秒で、ローカルの開発環境が構築できる、大変優れたソフトです。

phpdev423.exe でインストールされる、各アプリケーションソフトのバージョンは以下の通りです。

・Apache 1.3.27
・PHP 4.2.3
・MySQL 4.0.0-alpha-nt

ローカル環境での学習用としては、このバージョンで十分です。(MySQLのバージョンが alpha なのは気になりますが)

しかしローカル環境で開発したプログラムを、実際にレンタルサーバーにアップロードして動作させる場合は注意してください。

開発する前に、レンタルサーバー側の Apache、PHP、MySQL のバージョンを確認しておいたほうが無難です。

例えば PHP はバージョンにより使える関数が異なります。ローカルでもレンタルサーバーでも動くように注意しながらプログラミングする必要があります。

一番良いのは、ローカル側にもレンタルサーバー側と同じバージョンのアプリケーションをインストールすることです。

プログラミングに慣れてきたら、各アプリケーションソフトを個別にインストールするとよいでしょう。


PHP レンタルサーバーでデータベースに接続する方法について。

【講座名】
PHP初心者入門講座 に関する質問

【質問】
レンタルサーバーに PHP ファイルをアップロードして、データベースに接続する方法を教えてください。

【回答】
レンタルサーバーで動作させるには、そのサーバーに合わせた設定にする必要があります。

手順をまとめると以下のようになります。

(1)レンタルサーバーの管理画面からデータベースを作成する。

通常、PHPで作ったWebアプリケーションを、インターネット上で動かすには、Apache、PHP、MySQL の3つが必要です。(データベースを使わない場合もあります)

レンタルサーバーを借りた時点で、Apache、PHPは準備できています。データベースはインストールされていますが、ユーザーが自分で「データベースを作成」しなければ使えない状態です。

共有レンタルサーバーで、共有データベースを使う場合、1ユーザーにつき1データベースが基本です。(例外はありますが)

その1つのデータベースは、ユーザー自身が管理画面からデータベースを作成します。データベースサーバーは複数用意されていることが多いので、「mysql1.db.abc.ne.jp ~」のように選ぶことになります。データベースに接続するためのパスワードも自分で決めます。ユーザー名は決まっていることが多いです。


(2)管理ツール(phpMyAdmin)でデータベースに接続する。
データベースを作成した時のユーザ名とパスワードを使って、 phpMyAdmin で接続できたらデータベースは使用可能です。


(3)phpMyAdminでテーブルを作成する。


(4)phpMyAdminでレコードを数件追加する。


(5)PHPでデータベースに接続する部分だけをやってみる。

ローカル環境とレンタルサーバーでは設定が異なります。

・ローカル環境の場合
$link = mysql_connect('localhost', 'user', 'password');

localhost というサーバー名は、自分のパソコン内に Apache、PHP、MySQL をインストールした場合しか使えません。

・レンタルサーバーの場合
$link = mysql_connect('mysql1.db.abc.ne.jp', 'user', 'password');

レンタルサーバーの場合、ユーザーの管理画面から設定したデータベースサーバー名でなければインターネット上では接続できません。もちろんユーザー名、パスワードもレンタルサーバーで設定したものです。

PHPファイルは必ずサーバーにアップロードしてから動作確認します。セキュリティ上、ローカルのPHPファイルからは、Web上のデータベースに接続できないので注意してください。


(6)PHPでデータベースに接続し、データを表示(検索)してみる。
SELECT文


(7)追加、更新、削除などのプログラムを実行してみる。
INSERT、UPDATE、DELETE文

どのレンタルサーバーでも大体似たような手順です。


【ワンポイント】

「接続する部分だけをやってみる」というのは大事で、データベースに接続する部分が上手くいけば、検索、追加、更新、削除も簡単です。


PHPファイルの拡張子についての疑問。

【講座名】
PHP初心者入門講座 に関する質問

【質問】
PHPは拡張子が「.html」のファイルに PHP プログラムを組み込んでいくのものなんでしょうか?それとも拡張子が「.php」のファイルにHTMLを組み込むものなんでしょうか?

【回答】
拡張子が「.html」のファイルに、PHPでプログラムを書いても動きません。なぜならサーバーは、「.php」というファイル名のものを、PHPプログラムとして処理するからです。

「.php」ファイルの場合、サーバーはHTML部分はそのまま出力し、PHPのタグで囲まれた部分は処理結果を出力します。

でも「.php」ファイルだからといって、必ずプログラムを書かなければならないわけではなく、中身がHTMLだけでもエラーにはなりません。

極端な例を上げれば、以下のようなPHPプログラムがまったく書いていない、「.php」ファイルでもOKなのです。

ファイル名 test.php

<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <p>あああ</p>
  </body>
</html>



phpdevを残したまま新しいPHPをインストールしたい。

【講座名】
PHP初心者入門講座 に関する質問

【質問】
「phpdev」を残したまま、新しい PHP をインストールすることは可能でしょうか?

【回答】
通常、PHP だけをインストールすることはなく、Apache、PHP、MySQL を一緒にインストールして使うことが多いと思います。(データベースの MySQL は無くてもOK)

新しく個別にインストールする Apache、PHP、MySQL は、「phpdev」とは別の場所に保存されるので、同時にインストールすることはできます。

しかし phpdev にも Apache、PHP、MySQL が含まれているため、アプリケーション実行時にポート番号が重なります。

また WINDOWS フォルダに保存される、アプリケーションの設定ファイルが重なってしまうことがあります。そうすると設定が難しくなったり、または不具合の原因になるかもしれません。

したがって新しい Apache、PHP、MySQL をインストールする前に、「phpdev」をアンインストールしておいたほうが無難です。

各アプリケーションを個別にインストールすると、手間はかかりますが、その分細かい設定や機能の拡張が行なえます。PHPに慣れてきたら挑戦してみてください。

【ワンポイント】
最新版のPHPは、レンタルサーバーでは対応しているところが少ないです。もし公開する予定がある時は、お使いのレンタルサーバーが、どのPHPのバージョンをサポートしているか、事前に確認しておいたほうがいいです。

せっかく作ったプログラムが、ローカルの開発環境とWeb側でPHPのバージョンが異なるために動かないことがあります。

学習目的でローカル環境でしか使う予定がない場合や、社内でサーバーを立てて使うだけの場合なら、最新版でも問題ありません。


PHP phpdevをアンインストールしたい。

【講座名】
PHP初心者入門講座

【質問】
PHP の学習が終わったので、phpdev をアンインストールする方法を教えていただけないでしょうか?

【回答】

PHP初心者入門講座では、PHP の環境構築が簡単にできる phpdev を使用しました。phpdev はアンインストールする時も簡単です。

講座の手順どおりに進めた場合、Cドライブの直下に、「phpdev」というフォルダがあるはずです。それをフォルダごと削除するだけで、アンインストールすることができます。

qa-07.gif

あとは「C:\WINDOWS」の中に「php.ini」というファイルが残りますが、これは削除しても、そのまま残してもかまいません。

qa-08.gif

php.ini は PHP の設定に関するファイルです。気になるようでしたら削除してください。


「phpdev」は初心者の学習用にとても便利なソフトですが、残念ながら Apache、PHP、MySQL のバージョンは最新のものではありません。

本格的に PHP を学ぶ段階になったら、最新版を個別にインストールすることをおすすめします。


PHP レンタルサーバーにアップロードするとプログラムが動かない。

【講座名】
PHP初心者入門講座

【質問】
phpdev を使ったローカル環境では、ちゃんと動くサンプルプログラムが、レンタルサーバーでは動かないことがあります。何故でしょうか?

【回答】
「phpdev423.exe」を使ってインストールした PHP の バージョンは 「4.2.3」です。

PHP はバージョンによって使用できる関数が異なります。また PHP は「php.ini」というファイルで設定を行なうことができます。

共有のレンタルサーバーなどで、PHP のバージョンが決まっていたり、独自に php.ini を設定することができない場合は、その環境に合わせて PHP のプログラムを少し修正する必要があります。


(1)例えば PHP初心者入門講座 のサンプルプログラムでは、

<?= "テスト" ?>
という書き方をしていますが、これは

<?php print "テスト"; ?>
を省略した書き方です。

この書き方ができるには php.ini で次のように設定されている必要があります。

short_open_tag = On
qa-04.gif

*php.ini は 「C:\WINDOWS」にあります。


(2)また PHP サイトのマニュアルには、関数ごとに使えるバージョンが書かれています。

例えば「file_get_contents」という関数を調べると、PHP4.3.0 以上と PHP5 で使えることがわかります。

qa-05.gif

PHP サイト
http://www.php.net/


以上のように PHP のバージョンと php.ini の設定は、とても重要ですので、動かないときは確認してみてください。

スポンサードリンク


スポンサードリンク






プログラミング入門 Q&A TOPへ