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'; ?>
广告
将在 10 秒后关闭
bannerAds