PHP基本笔记
首先
我正在学习PHP。
我正在为自己做笔记。
从文本框中获取数据
<input type="text" name="count" >
<?php echo echo $_REQUEST['count'],'個の商品をカートに追加しました';?>
获取请求参数
$_REQUEST['リクエストパラメータ名']
isset函数
isset($_REQUEST['count'])
//isset関数は、変数に値が導入されていて、かつ値がNULLではない時にTRUEを返す
if(isset($_REQUEST['count'])){
echo "カートに商品が入っています”;
}else{
echo "カートに商品が入っていません";
}
使用比较运算符的表达式
$count==0
if($count==0){
echo 'カートに商品がありません'
}
数组函数(array函数)
//PHP5.4よりも古いバージョンを使用する場合
<?php
$question=array(
'初めての映画は?',
'ペットの名前は?',
'学校の名前は?',
'生まれた下関は?'
);
echo $question[1];
//PHP5.4以降
$question=[
'初めての映画は?',
'ペットの名前は?',
'学校の名前は?',
'生まれた下関は?'
];
echo $question[1];
?>
遍历每一个
//上記の配列をセレクトボックスで作成する場合
foreach($question as $item){
echo '<option value="',$item,'">',$item,'<option value>';
}
//$itemのみだとうまく出力されない',$item,'←が必要
``
##データベース(phpMyAdmin)
######データベースの削除
```php
drop database if exists shop
//drop databaseはデータベースを削除するSQLコマンドです。
//if existsで「指定するデータベースが存在する場合に」という条件を表す
创建数据库
create database shop default character set utf8 collate utf8_general_ci
//create databaseは「データベースを作成するコマンド」
//default character setは「データベースで用いる文字コードを表す」
//collateは「データベースにおいて行を並べる順番を決めるための方式」
生成用户
grant all on shop.* to 'staff'@'localhost' identified by 'staff0120'
//grant 「ユーザーに対してデータベースを操作する権限を与えるコマンド」
//all on shop.*「shopデータベースの全てのテーブルに対して権限を与える」ことを示す
//to 'staff'@'localhost'「ユーザー名」と「ホスト名」
//identified byは「ユーザーがデータベースにログインするためのパスワード」
连接到数据库。
use shop;
//useは「データベースに接続するためのコマンド」
创建表格
create table product (
id int auto_increment primary key,
name varchar(200) not null,
price int not null
);
//create table「テーブルを作成するためのコマンド」
商品编号的一列
id int auto_increment primary key,
//idは「列の名前」、intは「列のデータ」
//auto_incrementを指定すると「行を追加した時に番号が自動的に加算される」
//primary key=「主キー」と呼び「行を一意に識別するための値をあらわす」
产品名称的一栏
name varchar(200) not null,
//「name」は列の名前「varchar(200)」は型で「not null」はこの列をNULLにしてはならないという意味
价格一栏
price int not null
//priceは「列の名前」intは「整数を表す列のデータ」 「not null」はこの列をNULLにしてはならないという意味
添加数据
insert into product values(null, '豚肉', 600);
//insert intoは「指定したテーブルに新しい行を追加するためのコマンド」
//追加するデータはvalues(null, '豚肉', 600)のように「,」で区切って指定する
//文字データは「'」で囲み、数値データはそのまま記述することができる
获取数据
使用SQL的select查询语句
SELECT * FROM product;
//セレクト文を使うと「指定したテーブルの、指定した列を取得することができる」
//select 配列名 from テーブル名;
//初めにselectと書き、次の「*」は全ての列を指定している
//from productは「productテーブルを指している」
如何从PDD连接到数据库
通过PDO进行数据库连接
PDO 是一种类,它集中定义了用于操作数据库的变量和函数。
$pdo=new PDO('mysql:host=localhost;dbname=shop;charset=utf8','接続するユーザー名','パスワード');
foreach ($pdo->query('select * from product') as $row){
echo '<p>';
echo $row['name'];
}
生成 PDO 实例
$pdo=new PDO(...);
//newはインスタンスを生成する
//生成したインスタンスは変数に代入しておき、プロパティやメソッドを利用するために使う
识别数据库的信息
$pdo=new PDO('mysql:host=localhost;dbname=shop;charset=utf8','接続するユーザー名','パスワード');
//mysqlは「MySQLに接続することを表す」「:」以降に必要な情報を「;」で区切って並べる
//host=localhostは「MySQLがlocalhostに存在することを表す」
//dbname=shopは「shopデータベース」を指しcharset=utf8は「文字コードを表している」
执行SQL命令
PDOの変数->query('SQL文')
执行PHP中的select语句
$pdo->query('select * from product')
//PDOクラスのqueryメソッドを呼び出している
//メソッドの呼び出し方「変数->メソッド」
//queryメソッドは引数に指定したSQL文をデータベースに対して実行する
逐行处理获取到的数据
foreach ($pdo->query('select * from product') as $row){
...
}
//データを代入する変数名は$row以外でもOK
提取指定列的数据。
$row['id']
//配列['配列名']
搜索商品数据
在商品名栏目中搜索商品(输入界面)
<p>商品のデータを検索する</p>
<form action="user-output.php" method="post">
<input type="text" name="keyword">
<input type="submit" value="検索する">
使用商品名称进行商品搜索(输出脚本)
<?php
$pdo=new PDO('mysql:host=localhost;dbname=shop;charset=utf8','staff','staff0120');
$sql=$pdo->prepare('select * from product where name=?');
$sql->execute([$_REQUEST['keyword']]);
foreach ($sql as $row){
echo '<tr>';
echo '<td>',$row['id'],'</td>';
echo '<td>',$row['name'],'</td>';
echo '<td>',$row['price'],'</td>';
echo '</tr>';
}
?>
准备方法(SQL语句)
PDOの変数->prepare('SQL文')
//prepareメソッドはSQLが文がセットされたPDOStatementインスタンスを返します
执行方法(SQL语句)
PDOStatementの変数->exrcute([値])
//prepareメソッドで準備したSQLスクリプトをexecuteメソッドで実行する
创建包含外键的表格
create table rpadat (
id int not null primary key,
product_id int not null,
fee int not null,
foreign key(product_id) references product(id) )
购买商品
$sql=$pdo->prepare('insert into purchase values(?,?)');
if ($sql->execute([$purchase_id, $_SESSION['customer']['id']])) {
foreach ($_SESSION['product'] as $product_id=>$product) {
$sql=$pdo->prepare('insert into purchase_detail values(?,?,?)');
$sql->execute([$purchase_id, $product_id, $product['count']]);
}
unset($_SESSION['product']);
echo '購入手続きが完了しました。ありがとうございます。';
} else {
echo '購入手続き中にエラーが発生しました。申し訳ございません。';
}
创建登录功能
<?php session_start(); ?> //セッションの開始
<?php require '../header.php'; ?>
<?php require 'menu.php'; ?>
<?php
unset($_SESSION['customer']); //すでに同名でログインしているユーザーをログアウトにする記述
//unset関数は指定した変数を削除する
$pdo=new PDO('mysql:host=localhost;dbname=shop;charset=utf8',
'staff', 'password');
//PDOを使ってshopのデータベースと接続する
$sql=$pdo->prepare('select * from customer where login=? and password=?');
//ログイン名とパスワードを検索するためのSQL文
$sql->execute([$_REQUEST['login'], $_REQUEST['password']]);
//prepareメソッドで準備したSQLスクリプトをexecuteメソッドで実行する
foreach ($sql as $row) {
$_SESSION['customer']=[
'id'=>$row['id'], 'name'=>$row['name'],
'address'=>$row['address'], 'login'=>$row['login'],
'password'=>$row['password']];
//セッションデータの登録
//
}
if (isset($_SESSION['customer'])) {
echo 'いらっしゃいませ、', $_SESSION['customer']['name'], 'さん。';
} else {
echo 'ログイン名またはパスワードが違います。';
}
?>
<?php require '../footer.php'; ?>