jonathanbak / mysqlilib
Simple MySQLi Library
1.4.1
2025-05-21 01:35 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: ^9.5
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
$query = "SELECT * FROM test WHERE name LIKE '??%'"; $rows = []; while ($row = $DB->fetch($query, ['ํ ์คํธ'])) { $rows[] = $row; }
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.