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
15k
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活用
toru_kubota
1
320
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
2
660
思考過程から秘密が漏れる:Amazon Bedrock上のKimi K3を5つの方法で攻めたら、25回中22回漏洩した話
yama3133
1
120
AI時代における医療情報システムのセキュリティ / Security of Healthcare IT Systems in the AI Era
henryofficial
0
140
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
230
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.1k
レガシーコードに対する loop engineering的なAI開発プロセス導入について
kubell_hr
0
330
令和の今、あらためて IAM を考える。アクセスキーを「無くせない現実」との向き合い方
kazzpapa3
0
600
re:Invent2026 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
190
これからのデータエンジニアの役割について考える / Rethinking the Role of Data Engineers in the AI Era
okiyuki99
0
310
うちなーぐちが認識できるなら、秋田弁もいけるはず!? Amazon Transcribe方言チューニング検証
ryouto715
1
150
公共システムAdventCalendar2026
toru_kubota
0
300
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Chasing Engaging Ingredients in Design
codingconduct
0
390
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
2
520
Rebuilding a faster, lazier Slack
samanthasiow
85
9.8k
The SEO Collaboration Effect
kristinabergwall1
1
620
Git: the NoSQL Database
bkeepers
PRO
433
67k
Designing Experiences People Love
moore
143
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
840
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