Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Why don't you try "Query Builder"
Search
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
180
LaravelでTDDを体験しよう #phpcon2018
omoon
1
4.6k
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
AIに会社の文脈を理解させる技術~上流工程・非エンジニアにも広げるハーネスエンジニアリング実践~
ochtum
0
200
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
840
20260930_Gemma4_Hands-on
tsho
0
200
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
500
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
110
KanaAI
shreyas1009
0
140
Incremental HTTP
kazuho
5
1.8k
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
440
なぜAI任せのゲームは面白くならないのか?
hirohasuyoutube
0
370
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
1
140
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
0
150
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
8
2.4k
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
380
Everyday Curiosity
cassininazir
0
340
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Site-Speed That Sticks
csswizardry
13
1.5k
Design in an AI World
tapps
1
340
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Scaling GitHub
holman
464
140k
Building Adaptive Systems
keathley
44
3.2k
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