PHPの出力方法
戻り値として常に1を返す
echoとは違い複数の引数は指定できない
var_dump
変数に関する情報を出す。変数の型も出してくれる。
<?php
$test_str = 'test';
$test_int = 1;
$test_bool = true;
$test_array = array(
'test' => array(1, '2', 'aaa', false, 'true')
);
var_dump($test_str);
// 出力結果:string(4) "test" //文字列
var_dump($test_int);
// 出力結果:int(1) //整数型
var_dump($test_bool);
// 出力結果:bool(true) //trueかfalseかのデータ型のこと
var_dump($test_array);
/*
出力結果
array(1) {
["test"]=>
array(5) {
[0]=>
int(1)
[1]=>
string(1) "2"
[2]=>
string(3) "aaa"
[3]=>
bool(false)
[4]=>
string(4) "true"
}
}
*/
/*
この書き方も使えます!
var_dump($test_str, $test_int, $test_bool, $test_array);
*/
print_r
指定した変数に関する情報をわかり易く表示する。
自動的に改行されないので、"\n"を、この出力の下にechoで表示させる必要がある。
引数は一つしか選択できない。
<?php
$test_str = 'test';
$test_int = 1;
$test_bool = true;
$test_array = array(
'test' => array(1, '2', 'aaa', false, 'true')
);
print_r($test_str);
echo "\n";
// 出力結果:test
print_r($test_int);
echo "\n";
// 出力結果:1
print_r($test_bool);
echo "\n";
// 出力結果:1
print_r($test_array);
echo "\n";
/*
出力結果
Array
(
[test] => Array
(
[0] => 1
[1] => 2
[2] => aaa
[3] =>
[4] => true
)
調べたこと 第二十五回
フォームからレコードを操作する
<?PHP
//SQLとのコネクションを開く
$link =mysql_connect("localhost","sample","パスワード","sample");
mysql_set_charset($link, "utf8");
//入力された値を、SQLに入れるための、「INSERT文」を作る
$sql = "INSERT INTO address (username, zip, address1, address2,tel)"." VALUES(".
" ' " . mysql_real_escape_string($link,$_POST["username "]). " ' , " .
" ' " . mysql_real_escape_string($link,$_POST["zip"]). " ' , " .
" ' " .mysql_real_escape_string($link, $_POST["address1"]) . " ' , " .
" ' " .mysql_real_escape_string($link, $_POST["address2"]). " ' , " .
" ' " . mysql_real_escape_string($link,$_POST["tel"]). " ');";
//「INSERT文」を発行する
// コネクションを閉じる
mysql_close($link);
echo "レコードを追加しました。";
?>
流れが、
3,入力された値をSQLに入れるための、INSERT文を作る。
4, INSERT文を発行する。
5,コネクションを閉じる。
になる。
単純な文字列の統合で、入力されたデータを$_POST[”フィールド名”]で探して、
結合させて、INSERT文を作っている。
顧客情報を入力する画面で、登録ボタンを押すとデータが登録されていく。
mysql_real_escape_string ー> は必須!!
文字列に「 ’ 」が入っていたらエラーになってしまうので、必ずSQLエスケープと言われる上の関数を付け加えること。
(SQLインジェクションという、攻撃が仕掛けられたら、SQLの内容が勝手に書き換え
られてしまう)
調べたこと 第二十四回
データベースのエクスポート
テーブルを作成する時にどのようなSQL文が発行されたかは、テーブルをエクスポートすると分かる。
エクスポートのやり方
データベースのファイル項目を選んで、その中に「Export」があるので、それをクリックして、エクスポートする先のディレクトリとファイル名を指定する。
その後に、指定したファイルをテキストエディタで開いてみると、テーブル作成時の
命令文が記述されている。これで、CREATE TABLE の文が存在することを確認できる。
逆に、このエクスポートしたファイルをインポートすることができる。
その方法は、データベースのファイル項目を選んで、その中に、「import」があるので、それをクリックし、インポートしたいファイルを選ぶ。
(新しくそのファイルでデータベースを作成したいときは、Yes、
今開いているデータベースに追加したい場合は、No、を選ぶ)
命令文の種類
UPDATE文ー>データの更新
SETー>変更する値を置く
例
UPDATE address SET tel='987 6543 2198' WHERE id=1;
の場合だと、Idが1であるレコードのTelカラムを、987 6543 2198 に書き換える
ということになる。
DELETE文ー>レコードの削除
例
DELETE FROM address WHERE id=1;
アドレステーブルの、idが1のレコードを削除する。
これらの操作を、プログラムからどのように実行するのか?
1,データベースに接続
接続する時に必要なのは、データベースが稼働しているサーバの名前とIPアドレス
データベース名、ユーザー名、パスワード。
2,SQLの発行
3,レコードセットの読み込み
4,データベース接続を閉じる。
PHPからデータベースにINSERT分を発行するとき、、、(mysqliライブラリ)
例
<?
//コネクションを開く
$link = mysqli_connect("localhost", "sample","パスワード","sample");
//インサート文を発行する
mysqli_query($link,"INSERT INTO address(username,zip,address1,address2,tel)".
"VALUES('大越 張夫','117-117','広島県','広島市安佐北区桐陽台','987-6543-2198',);");
//コネクションを閉じる
mysql_close($link);
echo "レコードを追加しました。";
?>
これを実行すると、ぶらうざには レコードを追加しました。という
表示が出て、ちゃんとSQLには命令した通り、追加されている。
実行するたびに、同じレコードが追加される。
調べたこと 第二十三回
データベースについて
データベースは、それ自体が独立していて、プログラミング言語や各種ツールには依存していないので、様々なプログラミングから呼び出せるように作られている。
データベースにはいくつか種類があるけど、もっともよく使われるのは「リレーショナルデータベース管理システム」(RDBMS)というもの。
データの表のことを、「テーブル」
項目のことを、「カラム」
データのことを「レコード」
という。
データの管理の仕方は、
まず、情報に番号を付ける必要がある。同じような情報がたくさん載せられていると区別をすることが難しいので、そうする。
その番号を「主キー」(Primary Key)という。
主キーにしたいカラムを選んで、PRIMARYを指定すれば主キーになる。
カラムの「かた」と「サイズ」を指定しないといけない。
型には、数値型 文字列型 日付型 時刻型 などがある。
サイズは、文字列型のときー>長さをしめす。
数値型のときー>整数であるか、小数も含めるか、最小値最大値は幾つ?
なども含める。
例
カラム 型 サイズ 意味
id 数値型 ナシ 主キー。連番でつける。
という定義をする。
プログラムとデータベースがやり取りするには、プログラムからSQL文を送信して、受け取ったデータベースがSQL文を理解して、結果を返す という流れ。
NoSQLデータベース
RDBMS以外のデータベースのことをNoSQLという。
その中にも2つの種類がある。
キーバリュー型
キーと値のペアだけを保存するデータベースのこと。
複雑でないため、大量のデータを高速に読み書きできる。ユーザーごとに結びつけたい少量の保存によく使われる。
ドキュメント型
あらかじめスキーマを定義せず、テキスト全体を保存して、柔軟に検索ができるようにしたデータベース。
テーブル作成のためのSQL文
データベースを作成するとき、ユーザーを作成するとき、テーブルを作成するとき、それぞれに実は、SQL文が発行されている。
どんなSQL文が発行されているかしりたいときは、「エクスポート」から調べることで、知ることができる。
このエクスポートは主に、バックアップや移行のときに使う。
エクスポートしたSQLをテキストエディタで確認すると「CREATE TABLWE」が存在を確認することができる。
SQLでのデータ操作
INSERT文
INSERT INTO ・・・ テーブルに情報を追加する(カラムとレコードを記入)
例
INSERT INTO address(username) VALUES
(’デイビット スプレーン’);
SELECT文
SELECT ・・・ テーブルからレコードを取得する
例
SELECT カラム1 カラム2、、、FROM テーブル名
WHERE 条件 ORDER BY 並べ替えるカラム;
↓
並べ替えたいカラム
SELECT * FROM テーブル名 ・・・ 全レコードを取得する
調べたこと 第二十二回
調べたこと 第二十一回
*1:!isset($_SESSION["order"]
調べたこと第二十回
Cookieとセッション
WEBプログラムは、複数のページから構成されることがほとんど。
この複数のページから構成される場合、ページ間でのデータ共有が必要になる。
HTTPの基本機能。
クライアント側にデータを保存する仕組み。
サーバがクライアントになにかデータを保存したいときに、ヘッダ情報を送信する。その値は、どのドメインのサイトから送られてきたかという情報とともに、ブラウザが管理する場所(メモリやディスク)に保存される。
そして、ブラウザは次に同じドメインのサイトにアクセスする時に、保存されているクッキー情報があれば、ヘッダ情報を追加してアクセスするので、
WEBプログラム側で前回クライアントに送信したデータを参照できる。
クッキーが送られるのは同じドメインのサイト
PHPでcookieを設定 -> クライアントに返されるデータ
setcookie("名称","値"); -> Set-Cookie:名称=値
セッション情報
サーバ側にデータを保存する仕組み。クライアントを区別するためのランダムな
IDを割り当てて、そのIDに対応するデータの保存域をサーバ側に作成。
プログラム実行環境やライブラリによって提供される。
[リファラー]
WEBブラウザでは、クリンクをclickして別のページに移動したとき、そのリンク元のページのURLを「Refere」というヘッダとして送信する。
これをリファラーという。
ただし、リファラーはWEBブラウザが付与している情報にすぎないので、WEBブラウザによっては送信されないこともある。