PHP関連のことを調べてみた2022年03月14日

PHP関連のことを調べてみた2022年03月14日
目次

【MySQL】UPDATE・DELETE・INSERT実行後に処理件数を取得する方法

UPDATE・DELETE・INSERT実行後に出力される“Query OK, 1 row affected“の件数を取得する方法です。
“`sql
mysql> UPDATE animals SET name = ‘cat’ WHERE name = ‘lion’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
“`

SQLとPHP、2種類の方法を説明します。

# SQLで取得する
“ROW_COUNT()“関数で取得できます。
必ずステートメント(UPDATE、DELETE、INSERTなどの実行単位)の完了直後に実行してください。

## ROW_COUNT()の使い方
“SELECT ROW_COUNT();“を実行します。

“`sql
— UPDATE
mysql> UPDATE animals SET name = ‘dog’ WHERE name = ‘wolf’;
Query OK, 7 rows affected (0.00 sec)

元記事を表示

RHEL 8.5にOSS版httpd 2.4.52をインストールする(番外編-phpを利用する)

# 前回
[RHEL 8.5にOSS版httpd 2.4.52をインストールする(2)](https://qiita.com/hykwrtr/items/5581cab77871807594a5)

# 概要
インストールしたOSS版httpdでphpを動かしたいのでインストール&設定をした
CentOS8からモジュール版phpは使われなくなったようなのでphp-fpmを利用する

# 前提
– RHEL 8.5
– httpd 2.4.52 (ソースからインストール、前回の記事参考)
– php 7.4.28 (remi)

# インストール

“`
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

sudo dnf module reset php
sudo dnf module install p

元記事を表示

Laravel foreach内でループ回数を取得する

# foreach内でループ回数を取得したい
bladeテンプレートのforeachディレクティブ内で、$loop変数にアクセスできる

“`php
@foreach
@if($loop->iteration % 2 == 0)
// 偶数
@else
// 奇数
@endif
@endforeach
“`

## プロパティ
|プロパティ|説明|
|:———|—-|
|$loop->index|現在の反復のインデックス(初期値0)|
|$loop->iteration|現在の反復数(初期値1)|
|$loop->remaining|反復の残数|
|$loop->count|反復している配列の総アイテム数|
|$loop->first|ループの最初の繰り返しか判定|
|$loop->last|ループの最後の繰り返しか判定|
|$loop->even|今回が偶数回目の繰り返しか判定|
|$loop->odd|今回が奇数回目の繰り返しか判定|
|$loop->depth|現在のループのネストレ

元記事を表示

Laravel8以降でModelをjson化するときにaccessorにしてるプロパティを含めたいときの件

## はじめに

LaravelでModelといえばDBと一対一になってることが多いと思うんですが、たまにDBのテーブルのカラムにはないものを出力したいときってありますよね。
例えば住所とか顕著ですかね。

かんたんに一例としてこんな感じの `users` テーブルがあったとします。

|物理名|論理名|型|
|—|—|—|
|id|ID|bigint(auto_increment)|
|name|名前|varchar|
|zip_code|郵便番号|varchar|
|prefecture|県名|varchar|
|city|市町村名|varchar|
|address|番地|varchar|

それに対応する class はこんな感じだったりするわけじゃないですか。

“`php:App/Models/User.php
namespace App\Models;

class User extends Authenticatable
{

}
“`

そこで、住所を全部表示させるときにbladeなんかにこういう書き方するじゃないですか。

“`php

住所:

元記事を表示

PHPでの「include」の使い方

## 「include」の使い方
備忘録のためにメモしてます。

各ファイルで共通化している部分を`base.php`に記載します。
“`php:base.php




<?php echo $title ;?>


“`
タイトル部分に「`$title`」、bodyの中身を「`$content`」とし、呼び出し先の変数に置き換えることも可能。

`index.php`ファイルから`base.php`を読み込みたいときに`include`を使います。

“`php:index.php

元記事を表示

PHP+MySQL 接続・テーブル作成・クエリ実行

# PHP+MySQL 接続・テーブル作成・クエリ実行
備忘録のために、メモしてます。

## MySQLへの接続

“`php:mysqli_connect.php
$link = mysqli_connect($hostname , $username, $password, $databases);
if (!$link) {
echo ‘接続失敗です。’;
return;
}
“`

## テーブル作成

“`php:create_table.php
$query = <<

元記事を表示

【Laravel8】breezeでメール認証を導入する

Laravelには標準で認証の仕組みが複数用意されていますが、公式Docを見るとLaravel初心者の場合Breezeを使ってLaravelの認証に慣れていきましょうという旨が書かれています。

> Laravel Breezeは、Laravelアプリケーションを構築するためのシンプルで最小限の開始点を提供しますが、Jetstreamはより堅牢な機能と、追加のフロントエンドテクノロジースタックで、その機能を強化します。Laravelを初めて使用する場合は、Laravel Jetstreamへ進む前に、Laravel Breezeで勘所を掴むことをおすめします。

https://readouble.com/laravel/8.x/ja/starter-kits.html

というわけで従順にBreezeを導入してみたのですが、メール認証の実装で小一時間ほど詰まったので、備忘録を兼ねて記録に残しておきたいと思います。

## 環境、要件

– Docker
– docker compose
– PHP8.1.1
– Laravel8

※この記事を執筆した2022-03-13時

元記事を表示

PHP + MySQLフルスクラッチでユーザー認証機能を実装する【ログイン・ログアウト編】

ネイティブのPHPとSQLへの理解を深めるため、筋トレログアプリをフルスクラッチで開発してみました。その中でいろいろな学びがありましたが、本稿ではフルスクラッチでのユーザー認証機能の実装方法を解説します。今回は全体の導入とログイン・ログアウト機能を実装するところまで進めます。

# 開発環境
– XAMPP
– バックエンド : PHP7.4
– データベース : MariaDB10.4(タイトルではMySQLとしましたが、実際はMariaDBです。MySQLと挙動に大きな差はないので、これ以降はMySQLで表記を統一します)

※実際のアプリ開発ではフロントエンドにBootstrapを使用しましたが、本稿では解説の簡略化のためにCSSを当てていない状態で解説します。

# ファイル構成

“`
.
├── index.php
├── login.php
├── logout.php
├── sign_up.php
├── my_page.php
├── change_password.php
├── delete.php
├── delete_complete.php
└── c

元記事を表示

phpで擬似データベースを作ろう 改

雑です

最初に

この記事は、語彙力ゴミが書いた記事です。

命の保証はしません。注意ください。

あと思いつきです。

設定がやりやすいので、まあ見てくださいな。

仕組み

▼ 全体図

図はこんな感じです。

ざっくり言うとBasic認証があるフォルダーにデータを保存するだけです。

なのでユーザーはBasic認証のパスワードとIDを知らないと入れないのです。

サーバー一つで済みますね。Yeah!!

プログラムを書いてみよう

DBもどき側のプログラム

Basic認証のプログラムは、@mpyw さんの記事から引用させていただいて

元記事を表示

phpで疑似DBを作ろう

最初に

この記事は、語彙力ゴミが書いた記事です。

命の保証はしません。注意ください。

あと思いつきです。

設定がやりやすいので、まあ見てくださいな。

仕組み

▼ 全体図

図はこんな感じです。

ざっくり言うとBasic認証があるフォルダーにデータを保存するだけです。

なのでユーザーはBasic認証のパスワードとIDを知らないと入れないのです。

サーバー一つで済みますね。Yeah!!

プログラムを書いてみよう

DBもどき側のプログラム

Basic認証のプログラムは、@mpyw さんの記事から引用させていただいております。

元記事を表示

タイトルにその日送られたメールの数を付与して送信

最近その日にあったお問い合わせの数と日時を管理したいというタスクがあったので
タイトルに記入して管理できる様な実装を行ないました。そのアウトプットです。

まずはメール送信機能を作ります。

環境構築は割愛します。
Laravel9 MySQL PHP8系

ルーティング作成

“`php:

元記事を表示

WordPress ninjaテーブルを使ってショートコードでデータを呼び出す方法

MySQLにオリジナルテーブルを作ってデータを呼び出す方法もありますが、
そこまで複雑なことをしない場合は、データテーブルプラグインを使って
データを呼び出した方方が比較的簡単に実装できると思います。

ここでは、ninjaテーブルを使って呼び出してみたいと思います。

## 流れと設定方法
//——ninjaテーブルを使った値の呼び出し方————-
//プレフィックスを設定してください
//記事の中からショートコードで呼び出す
//ショートコード[nintbl table番号 条件項目 条件項目の値 取得フィールド]
//例えば、tabel番号が92でid=1のレコードのprice項目の値を取得する場合 [nintbl 92 id 1 price]
//注1 複数レコードが該当するような条件は利用できない
//注2 部分検索を利用している似たような項目名を付けない(price_max,price_min)
## ショートコード
“`sample.html
[nintbl table番号 条件項目 条件項目の

元記事を表示

【初心者用】Laravelのお勉強

# これは何?
エンジニア歴半年の新米がLaravelについて勉強した備忘録です。
何かの参考になれば幸いです。

# 全体のファイル構造
– composer.json → phpファイルの依存関係解決
– package.json → javaScript、フロントエンドの依存関係解決

# ライフサイクル

1. autoloadを読み込んで、requireしなくても名前空間を指定するだけで良くなる
1. Applicationインスタンスを作成(サービスコンテナ)、サービスプロバイダも読み込まれる
1. HttpKernelインスタンスを作成
1. Requestインスタンスを作成
1. HttpKernelがリクエストを処理してResponseを取得
1. レスポンスを送信
1. terminate()でリクエストとレスポンスを削除

# サービスコンテナ

依存関係を自動で解決してくれる。
依存関係のさらに先の依存関係まで全部解決してくれる。
app()はサービスコンテナを呼び出すヘルパ関数。

コンテナへの登録

“`php
app()->bind()

// 1度

元記事を表示

13: 比較演算子, 厳密な等価演算子

比較演算子

左辺と右辺の値を比較し、その結果をtrue/falseとして返す。(下記)
比較演算子は、if, while, do〜whileのような条件分岐/繰り返し命令で条件式を表すために利用する。

主な比較演算子

|演算|概要|用例|
|:-:|:-:|:-:|
|`==`|左辺と右辺の値が等しい場合はtrue|`7 == 7 →true`|
|`===`|左辺と右辺の値が等しく、かつ、同じデータ型である場合はtrue|`7 === ‘7’ →false`|
|`!=`|左辺と右辺の値が等しくない場合にtrue|`7 != 7 →false`|
|`<>`|左辺と右辺の値が等しくない場合にtrue(「`!=`」と同じ)|`7 <> 7 →false`|
|`!==`|左辺と右辺の値が等しくない、または同じデータ型でない場合にtrue|`7 !== ‘7’ →true`|
|`<`|左辺が右辺より小さい場合にtrue|`7 < 10 →true`| |`>`|左辺が右辺より大きい場合にtrue|`7 > 1

元記事を表示

ターミナル を使ってローカルホストを利用する

1. index.phpが入っているディレクトリを、カレントディレクトリにする。

2. 以下のコマンドを実行する。
php -S localhost:8080

3. ブラウザのウィンドウに、”localhost:8080”と入力。

元記事を表示

[PHP]int型の限界値越えるとfloat型に勝手に変換される

# はじめに

PHPでテストをしてて「ん?」っと若干つまづいたコトがあったので、メモ

※結論はタイトルの通り

## 前提

– PHP 8.0.1
– Laravel 8.0.2

# やりたいこと

以下のメソッド(Laravelのアクセサ)についてUnitテストしたい

“`App/Models/UserAttributes.php
/**
* payment_amount_sumの整形アクセサ.
* @return string
*/
public function getPaymentAmountSumFormatAttribute()
{
return number_format($this->payment_amount_sum).’円’;
}
“`

UserAttributeモデルの`payment_amount_sum`プロパティをただ「*,***円」の形に整形するというメソッド

# やったこと

以下の定数とテストメソッドを書いて実行した

“`App/Tests/Units/UserAttributes.php
/**
* getPa

元記事を表示

PHP で計算すると起こるわかりにくい現象

# これは何?

64bit 環境では、PHP の整数型が 64bit であることを知って驚いたので、そこに起因する不思議なことを見ていく。

# 基本的な動き

PHP は、整数型の値を整数型の値で割ると、整数じゃなくなることがある。

“`php:PHP8
10.000000/8.000000=1.250000
“`

そして、JavaScript と異なり、型も変わる。

“`php:PHP8
integer/integer=double
“`

さらに。
Python3 の `/` と異なり、除算結果が整数だと型は double にならない。

“`php:PHP8

元記事を表示

Laravel8 personal_access_tokens のマイグレーションを無効化する

## Laravel 8.6.0 以降、Laravel Sanctumがなぜか標準搭載

– https://github.com/laravel/laravel/pull/5663
– https://github.com/laravel/laravel/releases/tag/v8.6.0

Laravel9にも `laravel/sanctum` がプリインストールされています。

– https://github.com/laravel/laravel/blob/9.x/composer.json

(なんでなん…?)

## マイグレーションファイルを消してもテーブルが生成される

https://github.com/laravel/laravel/blob/9.x/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php

Laravelをインストールすると `database/migrations/2019_12_14_000001_create_personal_a

元記事を表示

formタグだけじゃない$_POST

formタグにおいてpostメソッドを指定するとフォームに入力された値が連想配列としてPHP $_POSTで使用出来るというのがこれまでの理解でした。

今回jQueryのAjaxでもPOST送信が出来て、PHP $_POSTで使用可能と学んだので備忘録とします。

“`Javascript
$.ajax({
url: ‘xxxxxx’,
type: ‘post’
data: {‘fruits’: apples},
})
“`
上記の場合宛先となるurl(‘xxxxxx’)にdata(‘fruits’: apple)をPOST送信することができ、
PHPでecho $_POST[‘fruits’]する事でapplesが出力されます。

元記事を表示

【PHP】PHP5でusortの比較結果が等しくなる要素の時に配列の並び順が変わってしまう

# 結論
usortの比較結果が等しくなる時(callbackが0を返す時)は配列の順番は変わらないと思っていたがPHP5ではそれが変わってしまう。
※公式ではPHP8.0.0より前のバージョンで起こるとのこと。

https://www.php.net/manual/ja/function.usort.php

# 試したこと

## 検証コード
“`php
$vals = [‘first’, ‘second’, ‘third’];

usort($vals, function($a, $b) {
return 0;
});

print_r($vals);
“`

## 期待した出力
“`php
Array
(
[0] => first
[1] => second
[2] => third
)
“`

## 実際の出力
“`php
Array
(
[0] => third
[1] => second
[2] => first
)
“`

# PHPのどのバージョンから並び順が変わるかを確認した
[3V4L](htt

元記事を表示

OTHERカテゴリの最新記事