jonathanbak / mysqlilib
Simple MySQLi Library
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: ^9.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
๐ก ๊ฐ๋ณ๊ณ ์ค๋ฌด ์นํ์ ์ธ PHP MySQL ๋ผ์ด๋ธ๋ฌ๋ฆฌ
PHP 5.6๋ถํฐ PHP 8.3๊น์ง ํญ๋๊ฒ ํธํ๋๋ฉฐ, ๋จ์ํ๊ณ ์ง๊ด์ ์ธ ์ธํฐํ์ด์ค๋ก ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋์ ๊ตฌํํ ์ ์์ต๋๋ค.
โจ Features
mysqli๊ธฐ๋ฐ ๊ฒฝ๋ ORM ์คํ์ผ ๊ตฌํ:param,?์คํ์ผ์ ์ ์ฐํ ๋ฐ์ธ๋ฉ ์ง์- Prepared Statement ์๋ ์ฒ๋ฆฌ
- Iterator ๊ธฐ๋ฐ
fetch()์ง์ - ์์ธ ์ฒ๋ฆฌ ๊ธฐ๋ฐ์ ์์ ์ฑ ํ๋ณด
- FakeDb ๋ฅผ ํตํ ๋จ์ ํ ์คํธ ๊ฐ๋ฅ
๐ ๏ธ Installation
composer require jonathanbak/mysqlilib
๐ฆ Usage
Connect & Fetch
$DB = new MySQLiLib($host, $user, $password, $dbName); $query = "SELECT * FROM test"; $row = $DB->fetch($query); var_dump($row);
๐ SELECT with Parameters: fetch() vs fetchOne()
๋ ํจ์ ๋ชจ๋ ๋จ์ผ row๋ฅผ ๋ฐํํ์ง๋ง, ๋์ ๋ฐฉ์์๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
| ํจ์ | ๋ฐํ ๋์ | ๋ฐ๋ณต ํธ์ถ ์ ๋์ | ์ ํฉํ ์ํฉ |
|---|---|---|---|
fetch() |
ํ ์ค ๋ฐํ | ๋ค์ ์ค ์์ฐจ ๋ฐํ | ์ฌ๋ฌ ์ค ์ค์์ ๋ฐ๋ณต ์ฒ๋ฆฌ ์ |
fetchOne() |
ํ ์ค ๋ฐํ | ๋งค๋ฒ ๋์ผํ ๊ฒฐ๊ณผ | ๋จ ํ ์ค๋ง ๊ฐ์ ธ์ฌ ๋ |
โ
fetch() - ๋ฐ๋ณต ํธ์ถ๋ก ๋ค์ row ์์ฐจ ์ ๊ทผ
$query = "SELECT * FROM test WHERE id < ?"; $row1 = $DB->fetch($query, [5]); $row2 = $DB->fetch($query, [5]); var_dump($row1 === $row2); // false (๊ฐ์ ์ฟผ๋ฆฌ โ ๋ค์๋ฒ ๋ฐ์ดํฐ ๊ฐ์ ธ์ด)
- ๋ด๋ถ์ ์ผ๋ก
mysqli_result๋ฅผ ๋ฐ๋ณตํด์ ์ฝ์ด์ค๋ฉฐ ์ดํฐ๋ ์ดํฐ์ฒ๋ผ ์๋ํฉ๋๋ค. - ๊ฐ์ ์ฟผ๋ฆฌ/ํ๋ผ๋ฏธํฐ๋ผ๋ ๋งค ํธ์ถ๋ง๋ค ๋ค์ ํ์ ๋ฐํํ๋ฉฐ, ๋ ์ด์ ์์ผ๋ฉด
null์ ๋ฐํํฉ๋๋ค.
โ
fetchOne() - ํญ์ ๋จ ํ ์ค๋ง ๋ฐํ
$query = "SELECT * FROM test WHERE id < ?"; $row1 = $DB->fetchOne($query, [5]); $row2 = $DB->fetchOne($query, [5]); var_dump($row1 === $row2); // true (๊ฐ์ ์ฟผ๋ฆฌ โ ๊ฐ์ ๊ฒฐ๊ณผ)
- ๋ด๋ถ์ ์ผ๋ก
query()๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผfetch_assoc()์ผ๋ก ์ฆ์ ๊ฐ์ ธ์จ ๋ค ๋ฐํํฉ๋๋ค. - ๋งค ํธ์ถ๋ง๋ค ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ฏ๋ก, ์กฐ๊ฑด์ด ์ ํํ ํ๋์ row๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ ์ ํฉํฉ๋๋ค.
Fetch Multiple Rows (Iterator)
$query = "SELECT * FROM test WHERE id = ?"; $rows = []; while ($row = $DB->fetch($query, [11])) { $rows[] = $row; }
LIKE Query
โ ๏ธ LIKE ์ฟผ๋ฆฌ์์
??์นํ ๋ฐฉ์์ v1.3.0๋ถํฐ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.
๋ฐ์ธ๋ฉ ๊ฐ์%๋ฅผ ํฌํจํ์ฌLIKE ?ํ์์ผ๋ก ์ฌ์ฉํ์ธ์.
LIKE ๊ฒ์ ์์ (? ํ ๊ฐ๋ง ์ฌ์ฉ)
$query = "SELECT * FROM test WHERE name LIKE ?"; $rows = []; while ($row = $DB->fetch($query, ['ํ ์คํธ%'])) { $rows[] = $row; } var_dump($rows);
๋ฌธ์์ด ์ ์ฒด๋ฅผ ๋ฐ์ธ๋ฉํ ๊ฒฝ์ฐ
'ํ ์คํธ%'์ฒ๋ผ ์์ผ๋์นด๋๋ฅผ ํฌํจ์์ผ ์ ๋ฌํฉ๋๋ค.
๐ท๏ธ Named Parameter (:param) ์์
$query = "SELECT * FROM test WHERE id > :id AND name = :name"; $params = [ 'id' => 10, 'name' => 'ํ๊ธธ๋' ]; $rows = []; while ($row = $DB->fetch($query, $params)) { $rows[] = $row; } var_dump($rows);
:param์คํ์ผ์ ๋ด๋ถ์ ์ผ๋ก?๋ก ์นํ๋๋ฉฐ, ๋ฐฐ์ด์ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ ์ ๋ ฌํ์ฌ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค.
INSERT / UPDATE / DELETE
$DB->query("INSERT INTO test SET id = ?, reg_date = ?", [33, date("Y-m-d H:i:s")]); $DB->query("DELETE FROM test WHERE id = ?", [33]);
Exception Handling
try { $DB->query("INSERT INTO test SET id = ?", [33]); } catch (\MySQLiLib\Exception $e) { echo "์๋ฌ: " . $e->getMessage(); }
Using bind_param()
$DB->bind_param('i'); $DB->query("INSERT INTO test SET id = ?, reg_date = ?", [33, date("Y-m-d H:i:s")]); $DB->bind_param('i'); $DB->query("DELETE FROM test WHERE id = ?", [33]);
๐ง Contact
์ฌ์ฉ ์ค ๋ฌธ์์ฌํญ์ด๋ ๋ฒ๊ทธ ์ ๋ณด๋ ์ธ์ ๋ ์ง ์๋ ์ด๋ฉ์ผ๋ก ์ฐ๋ฝ์ฃผ์ธ์:
๐งพ License
MIT License.