Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Why don't you try "Query Builder"
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
omoon
May 21, 2016
Technology
3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Why don't you try "Query Builder"
PHPカンファレンス福岡2016のトークで使ったスライドです
関連レポジトリ)
https://github.com/omoon/phpconfuk2016
omoon
May 21, 2016
More Decks by omoon
See All by omoon
My First Adobe XD Plugin
omoon
0
170
LaravelでTDDを体験しよう #phpcon2018
omoon
1
4.5k
Laravel でアプリケーションを開発し Heroku で公開するまでの一部始終 #laravel_osaka
omoon
3
1.5k
素晴らしき Carbon の世界 〜あなたも今日から日時マスター〜
omoon
4
14k
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon
0
200
Dive into the Cloud with our buddy, lovely PHP!
omoon
0
1.2k
FuelPHP をさわってみて #phpkansai
omoon
2
240
Other Decks in Technology
See All in Technology
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
0
180
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
140
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
110
強化学習「理論」入門
enakai00
3
3.6k
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
340
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
1
630
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.4k
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.4k
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
270
Goでデータパイプラインを作ろう
sansantech
PRO
1
470
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.4k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.3k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
430
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
Discover your Explorer Soul
emna__ayadi
2
1.3k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
460
Speed Design
sergeychernyshev
33
2k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
240
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
230
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
420
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
GitHub's CSS Performance
jonrohan
1033
470k
Transcript
8IZEPO`UZPVUSZ 2VFSZ#VJMEFS 1)1$POGFSFODF'VLVPLB .BZ 4PUBSP0.63"
"CPVU.F w4PUBSP0.63" w0TBLB +BQBO w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1 w-BSBWBM wPNPPOPSH
w!PNPPO
None
2VFSZ#VJMEFS
2VFTUJPOT w%PZPVLOPX42- w.Z42-1PTUHSF42-0SBDMFPUIFST w1%0 w,OPX2VFSZ#VJMEFS w6TF2VFSZ#VJMEFS w6TF03.
/PUF w1%0 w*MMVNJOBUF%BUBCBTF w.Z42-
4BNQMF%BUBCBTF
None
5PQJDT w8IBUJTl2VFSZ#VJMEFSz w#FOFpUT w)PXUPBQQMZ2VFSZ#VJMEFSUPZPVSPXOBQQ w4PNFFYBNQMFT
8IBU`T 2VFSZ#VJMEFS
1JD DPOTUSVDUJPO
1JD DPOTUSVDUJPO
"UPPMUPCVJME42-
None
SELECT name, price FROM books WHERE name LIKE '%PHP%' ORDER
BY price DESC LIMIT 10
SELECT name, price FROM books WHERE name LIKE '%PHP%' ORDER
BY price DESC LIMIT 10
&BDIQBSUPG42- IBTB30-&
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('name', 'desc') ->take(10) ->select('name', 'price');
SELECT `name`, `price` FROM `books` WHERE `name` LIKE '%PHP%' ORDER
BY `price` DESC LIMIT 10
DELETE FROM `books` WHERE `name` LIKE '%PHP%' ORDER BY `price`
DESC LIMIT 10
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('price', 'desc') ->take(10) ->select('name', 'price');
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('price', 'desc') ->take(10) ->delete();
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('price', 'desc') ->take(10) ->select('name', 'price');
$builder->table('books') ->where('name', 'like', '%PHP%') ->orderBy('price', 'desc') ->take(10) ->select('name', ‘price') ->get();
#FOFpUT
#FOFpUT w&BTZUPFEJU w4FDVSF w&BTZUPSFBE w3FVTBCMF
&BTZUPFEJU
%FNP
4FDVSF
$name = 'PHPΤϯδχΞཆಡຊ'; $sql = " SELECT `name`, `price`
FROM `books` WHERE `name` = $name ORDER BY `price` DESC "; $sth = $pdo->prepare($sql); $sth->execute();
None
None
$name = "t' OR 't' = 't"; $sql =
<<<'SQL' SELECT `name`, `price` FROM `books` WHERE `name` = $name ORDER BY `price` DESC SQL; $sth = $pdo->prepare($sql); $sth->execute();
None
$name = "t' OR 't' = 't"; $sql =
<<<SQL SELECT `name`, `price` FROM `books` WHERE `name` = ? ORDER BY `price` DESC SQL; $sth = $pdo->prepare($sql); $sth->execute([$name]);
None
$name = "t' OR 't' = 't"; $builder->table('books') ->select('name',
'price') ->where('name', '=', $name) ->orderBy('name', 'desc');
&BTZUPSFBE
SELECT `name`, `price` FROM `books` WHERE `name` LIKE
‘%PHP%' AND `price` > 2000 ORDER BY `price` DESC LIMIT 10
$sql = " SELECT `name`, `price` FROM `books`
WHERE `name` LIKE :name AND `price` > :price ORDER BY `price` DESC LIMIT :limit "; $sth = $pdo->prepare($sql); $sth->bindParam(':name', $name); $sth->bindParam(':price', $price); $sth->bindParam(':limit', $limit, PDO::PARAM_INT); $sth->execute();
$name = '%PHP%'; $price = 2000; $limit = 10;
$sql = "SELECT `name`, `price` FROM `books` WHERE `name` LIKE ? AND `price` > ? ORDER BY `price` DESC LIMIT ?"; $sth = $pdo->prepare($sql); $sth->execute([$name, $price, $limit]);
$name = '%PHP%'; $price = 2000; $limit = 10;
$builder->table('books') ->select('name', 'price') ->where('name', 'like', $name) ->where('price', '>', $price) ->orderBy('name', 'desc') ->take($limit);
None
3FVTBCMF
SELECT `name`, `price` FROM `books` WHERE `price` <
2000
$cheap_books = $builder->table('books') ->where('price', '<', 2000);
$cheap_books->orderBy('name'); $cheap_books->orderBy('price'); $cheap_books->orderBy('price', 'desc'); $cheap_books->orderBy('price', ‘desc') ->take(10);
$cheap_books->orderBy('price', ‘desc') ->take(10) ->select();
$cheap_books->orderBy('price', ‘desc') ->take(10) ->delete();
$cheap_books->count(); $cheap_books->max('price'); $cheap_books->min('price'); $cheap_books->average('price'); $cheap_books->sum('price');
#FOFpUT w&BTZUPFEJU w4FDVSF w&BTZUPSFBE w3FVTBCMF
)PXUPBQQMZ 2VFSZ#VJMEFS UPZPVSPXOBQQT
{ "require": { "illuminate/database": "5.2.*" } }
require_once '/path/to/vendor/autoload.php';
use Illuminate\Database\Capsule\Manager as Builder; class Connection { private $host =
'localhost'; private $username = 'user'; private $password = 'pass'; private $database = 'database'; public function getBuilder() { $builder = new Builder(); $builder->addConnection([ 'driver' => 'mysql', 'host' => $this->host, 'database' => $this->database, 'username' => $this->username, 'password' => $this->password, 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); $builder->setAsGlobal(); $builder->setFetchMode(PDO::FETCH_ASSOC); return $builder->connection(); } } $builder = (new Connection())->getBuilder();
4PNFNPSFFYBNQMFT
+0*/
SELECT `books`.`name` AS `book_name`, `books`.`price`, `authors`.`name` AS `author_name`, `authors`.`age` FROM
`books` LEFT JOIN `authors` ON `books`.`author_id` = `authors`.`id` WHERE `books`.`price` >= ?
$results = $builder->table('books') ->leftJoin('authors', 'books.author_id', '=', 'authors.id') ->where('books.price', '>=', 5000)
->select( 'books.name as book_name', 'books.price', 'authors.name as author_name', 'authors.age' );
*/4&35
$values = []; for ($i = 0; $i < 10000;
$i++) { $values[] = [ 'name' => 'name' . $i, 'author_id' => rand(1, 10), 'price' => rand(500, 10000), ]; } $sql = "INSERT INTO books (name, author_id, price) values (?, ?, ?)”; $sth = $pdo->prepare($sql); foreach ($values as $value) { $sth->execute(array_values($value)); } $builder->table('books')->insert($values);
INSERT INTO `books`(`name`, `author`, `price`) VALUES(?, ?, ?) . .
. VS INSERT INTO `books`(`name`, `author`, `price`) VALUES(?, ?, ?),(?, ?, ?),(?, ?, ?)......
NZTRMJ T 1%0 T 2VFSZ#VJMEFS NT
61%"5&3"8
UPDATE `books` SET `name` = CONCAT('ʲ͍҆Αʂʳ', `name`) WHERE `price` <
3000
$cheap_books->update([ 'name' =>"CONCAT('ʲ͍҆Αʂʳ' , `name`)" ]);
None
$cheap_books->update([ 'name' => $builder->raw( "CONCAT('ʲ͍҆Αʂʳ' , `name`)" ) ]);
None
"OZ2VFTUJPOT