metalsm7/azlib-php

Custom Data Library


Keywords
AZLib, AZData, AZList, AZSql
License
MIT

Documentation

PHP Mysqli Helper

Install

packagist : https://packagist.org/packages/metalsm7/azlib-php

$ composer require metalsm7/azlib-php

AZData

AZSql

Database ์ฒ˜๋ฆฌ ํ—ฌํผ (mysql ์ง€์›)

  • AZData, AZList ๊ฐ์ฒด๋กœ ๊ฒฐ๊ณผ ๋ฐ”์ธ๋”ฉ
  • Prepared Statement ์ง€์›
  • Stored Procedure ์ง€์›

๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

// ์ดˆ๊ธฐํ™”
$sql = AZLib\AZSql::create($db); // $sql = new AZLib\AZSql($db);

// ๊ธฐ๋ณธ
$col = $sql->set_query('SELECT id FROM users LIMIT 1')->get(); // ๋‹จ์ผ ๊ฒฐ๊ณผ #1/2
$col = $sql->get('SELECT id FROM users LIMIT 1'); // ๋‹จ์ผ ๊ฒฐ๊ณผ #2/2
$row = $sql->get_data('SELECT id, name from users LIMIT 1'); // ๋‹จํ–‰ ๊ฒฐ๊ณผ
$rows = $sql->get_data('SELECT id, name from users LIMIT 3'); // ๋‹คํ–‰ ๊ฒฐ๊ณผ

// ๋™์  ๋ฐ prepared statement ์ ์šฉ
$query = 'SELECT id, name FROM users WHERE type=@type AND region=@region LIMIT @offset, @length';
$rows = $sql
  //->set_prepared(true) // prepared statement ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ true๋กœ ์ง€์ •(๊ธฐ๋ณธ๊ฐ’: false)
  ->set_query($query)
  /*
  ->add_parameter('@type', 'student') // set_parameters ๋Œ€์‹  add_parameter ์‚ฌ์šฉ์˜ ๊ฒฝ์šฐ
  ->add_parameter('@region', 15)
  ->add_parameter('@offset', 0)
  ->add_parameter('@length', 10)
  */
  ->set_parameters(
    AZLib\AZData::create()
      ->add('@type', 'student')
      ->add('@region', 15)
      ->add('@offset', 0)
      ->add('@length', 10)
  )
  ->get_list();

// ๋ฐ˜ํ™˜๊ฐ’์„ ๊ฐ€์ง€๋Š” stored procedure ์˜ ๊ฒฝ์šฐ
$list = $sql
  //->set_prepared(true) // prepared statement ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ true๋กœ ์ง€์ •(๊ธฐ๋ณธ๊ฐ’: false)
  ->set_stored_procedure(true) // stored procedure ์‚ฌ์šฉ์˜ ๊ฒฝ์šฐ
  ->set_query('CALL proc_test(@arg1, @arg2, @out1, @out2)') // ์ธ์ˆ˜๊ฐ’ arg1, arg2 ์™€ ๋ฐ˜ํ™˜๊ฐ’ out1, out2
  ->add_parameter('@arg1', 'input1') // ์ „๋‹ฌ๊ฐ’ ์ž…๋ ฅ
  ->add_parameter('@arg2', 'input2')
  ->add_return_parameter('@out1') // ๋ฐ˜ํ™˜๊ฐ’ ์ž…๋ ฅ, ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๋“ฑ๋กํ•˜์ง€ ์•Š๋Š” ์ž๋ฃŒ๋Š” ์ „๋‹ฌ๋ฐ›์ง€ ๋ชปํ•จ
  ->add_return_parameter('@out2')
  ->get_multi(); // ํ”„๋กœ์‹œ์ ธ ๋‚ด ์ฟผ๋ฆฌ๋“ค์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ’ ์ €์žฅ์šฉ, AZList[] ํ˜•์‹ ๋ฐ˜ํ™˜
echo "out1:".$sql->get_return_parameter('@out1').PHP_EOL; // @out1 ์œผ๋กœ ์ง€์ •๋œ ๋ฐ˜ํ™˜๊ฐ’ ํ™•์ธ
echo "out2:".$sql->get_return_parameter('@out2').PHP_EOL; // @out2 ์œผ๋กœ ์ง€์ •๋œ ๋ฐ˜ํ™˜๊ฐ’ ํ™•์ธ

๋‹จ์ˆœํ™” ์ฒ˜๋ฆฌ ์‚ฌ์šฉ๋ฒ•

// ์ดˆ๊ธฐํ™”
$bql = AZLib\AZSql\Basic::create('users', $db); // $bql = new AZLib\AZSql\Basic('user', $db);

// insert
$bql
  //->set_prepared(true) // prepared statement ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ true๋กœ ์ง€์ •(๊ธฐ๋ณธ๊ฐ’: false)
  ->set('id', 'userid1')
  ->set('name', 'username1')
  ->set('type', 'teacher')
  ->set('region', 15)
  ->do_insert(true); // true ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ id๊ฐ’ ๋ฐ˜ํ™˜, ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ ์˜ํ–ฅ์„ ๋ฐ›๋Š” rows ๊ฐฏ์ˆ˜ ๋ฐ˜ํ™˜
  // set_prepared(false)์ธ ๊ฒฝ์šฐ -> INSERT INTO users (is, name, type, region) VALUES ('userid1', 'username1', 'teacher', 15)
  // set_prepared(true)์ธ ๊ฒฝ์šฐ -> INSERT INTO users (is, name, type, region) VALUES (?, ?, ?, ?)

// update
$bql
  //->set_prepared(true) // prepared statement ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ true๋กœ ์ง€์ •(๊ธฐ๋ณธ๊ฐ’: false)
  ->set('type', 'teacher')
  ->where('name', 'username1')
  ->where('region', 15)
  ->do_update(); // ์˜ํ–ฅ์„ ๋ฐ›๋Š” rows ๊ฐฏ์ˆ˜ ๋ฐ˜ํ™˜
  // set_prepared(false)์ธ ๊ฒฝ์šฐ -> UPDATE users SET type='teacher' WHERE name='username1' AND region=15
  // set_prepared(true)์ธ ๊ฒฝ์šฐ -> UPDATE users SET type=? WHERE name=? AND region=?

// delete
$bql
  //->set_prepared(true) // prepared statement ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ true๋กœ ์ง€์ •(๊ธฐ๋ณธ๊ฐ’: false)
  ->where('name', 'username2')
  ->where('region', 11)
  ->do_delete(); // ์˜ํ–ฅ์„ ๋ฐ›๋Š” rows ๊ฐฏ์ˆ˜ ๋ฐ˜ํ™˜
  // set_prepared(false)์ธ ๊ฒฝ์šฐ -> DELETE FROM users WHERE name='username2' AND region=11
  // set_prepared(true)์ธ ๊ฒฝ์šฐ -> DELETE FROM users WHERE name=? AND region=?