mysqli.php 는 MySqli 사용에 도움되기 위한 기본 설명서입니다.

MySqli 에서 필요한 library 는 다음과 같습니다.

  1. mysqli.php
    MySql 에 데이터를 입력하거나 출력을 담당합니다.

환경 설정

공통 상수

  • HABONYPHP_DIRNAME
    						
    MY SQL 이 설치된 경로. 끝에 반드시 / 를 입력해 주세요.
    
    기본값: ./

사용 가능한 상수

  • PHP_SQL_HOST
    						
    MY SQL 호스트 이름.
    ex. localhost
    기본 값: ini_get("mysqli.default_host")
  • PHP_SQL_USERNAME
    						
    MY SQL 사용자 이름.
    기본 값: ini_get("mysqli.default_user")
  • PHP_SQL_PASSWORD
    						
    MY SQL 사용자 비밀번호.
    기본 값: ini_get("mysqli.default_pw")
  • PHP_SQL_DATABASENAME
    						
    MY SQL 데이터베이스 이름.
    기본값: test
  • PHP_SQL_PORT
    						
    MY SQL 포트 번호.
    기본 값:  ini_get("mysqli.default_port")
  • PHP_SQL_SOCKET
    						
    MY SQL 소켓.
    기본값: ini_get("mysqli.default_socket")
  • PHP_SQL_CHARSET
    						
    MY SQL 언어 설정.
    기본값: utf8
  • PHP_SQL_HASH
    						
    MY SQL 암호화 방식.
    기본값: sha512

사용 가능한 목록.

MySql 클래스에서 사용할 수 있는 메소드 목록을 설명합니다.

  • mysql( connect )

    MySql 에 접속하기 위해 초기화 합니다.

    • connect: 배열, 선택입니다. 다중 MySql 접속에 사용됩니다.
      • host: MY SQL 호스트 이름. 기본 값: PHP_SQL_HOST
      • user: MY SQL 유저 이름. 기본 값: PHP_SQL_USERNAME
      • pass: MY SQL 패스워드 이름. 기본 값: PHP_SQL_PASSWORD
      • database: MY SQL 데이터베이스 이름. 기본 값: PHP_SQL_DATABASENAME
      • port: MY SQL 포트 번호. 기본 값: PHP_SQL_PORT
      • socket MY SQL 소켓. 기본 값: PHP_SQL_SOCKET
      • charset: MY SQL 언어. 기본 값: PHP_SQL_CHARSET
    							
    $mysqli = new mysql(
    	array(
    		'host'=>'localhost',
    		'user'=>'habony',
    		'pass'=>'123456',
    		'database'=>'habony'
    	)
    );
    $mysqli->set_table_name( $table );
    $mysqli->select_Query( $query );
    
    $mysqli->sql_query();
  • set_table_name( table )

    테이블 이름을 구성합니다.

    • table: 문자열, 필수

    							
    $mysqli = new mysql();
    $mysqli->set_table_name( $table );
    // 명령어..
  • select_Query( query )

    SELECT 문을 구성합니다.

    • query: 배열, 선택

    							
    $mysqli = new mysql();
    $mysqli->set_table_name( $table );
    $mysqli->select_Query( $query );
    
    $mysqli->sql_query();
  • sql_mquery( query, resulttype )

    다중 SELECT 문을 구성합니다.

    • query: 배열, 필수
    • resulttype: 선택, sql_fetch() 메소드에서 사용하는 resulttype 인수
      • MYSQLI_BOTH: 기본 값, 필드 값을 연관배열과 숫자배열을 받아옵니다.
      • MYSQLI_ASSOC: 필드 값을 연관배열로 받아옵니다.
      • MYSQLI_NUM: 필드 값을 숫자 배열로 받아옵니다.

    							
    $mysqli = new mysql();
    $row = $mysqli->sql_mquery( $query );
    
    print_r($row);
  • update_Query( query )

    UPDATE 문을 구성합니다.

    • query: 배열, 필수

    							
    $mysqli = new mysql();
    $mysqli->set_table_name( $table );
    $mysqli->update_Query( $query );
    
    $mysqli->sql_query();
  • insert_Query( query, how )

    INSERT 문을 구성합니다.

    • query: 배열, 필수
    • how: true 나 false, 선택, true 이면 REPLACE INTO 로 입력합니다.

    							
    $mysqli = new mysql();
    $mysqli->set_table_name( $table );
    $mysqli->insert_Query( $query );
    
    $mysqli->sql_query();
  • delete_Query( query )

    DELETE 문을 구성합니다.

    • query: 배열, 선택

    							
    $mysqli = new mysql();
    $mysqli->set_table_name( $table );
    $mysqli->delete_Query( $query );
    
    $mysqli->sql_query();
  • duplicate_Query( query )

    자료가 없으면 INSERT 하고, 기존 자료가 있으면 UPDATE 합니다.

    • query: 배열, 필수

    							
    $mysqli = new mysql();
    $mysqli->set_table_name( $table );
    $mysqli->duplicate_Query( $query );
    
    $mysqli->sql_query();
  • sql_query( query )

    INSERT, UPDATE 등 질의를 전송합니다.

    • query: 배열, 선택, 사용자 질의를 만들어 전송할 때 입력합니다.

    							
    $mysqli = new mysql();
    $mysqli->delete_Query( $query );
    
    if( $mysqli->sql_query() )
    {
    	// 질의 성공시
    }
  • sql_fetch( resulttype )

    결과 값을 연관배열(또는 인덱스 배열)로 받아 옵니다.

    • MYSQLI_BOTH: 기본 값, 필드 값을 연관배열과 숫자배열을 받아옵니다.
    • MYSQLI_ASSOC: 필드 값을 연관배열로 받아옵니다.
    • MYSQLI_NUM: 필드 값을 숫자 배열로 받아옵니다.

    							
    $mysqli = new mysql();
    $mysqli->set_table_name( $table );
    $mysqli->select_Query( $query );
    
    if( $row = $mysqli->sql_fetch() )
    {
    	print_r($row[0]);
    }
  • insert_id

    insert_id 를 얻습니다.

    							
    $mysqli = new mysql();
    $mysqli->set_table_name( $table );
    $mysqli->insert_Query( $query );
    
    if( $mysqli->sql_query() )
    {
    	$insert_id = $mysqli->insert_id();
    }
  • sql_escape

    문자열을 이스케이프합니다.

    							
    $mysqli->sql_escape("문자열");
  • hash

    문자열을 암호화합니다. PHP_SQL_HASH 상수로 설정, 기본 값: sha512

    							
    $mysqli->hash("문자열");


SELECT

형식: select_Query( query );

Example #1

						
$section = array(
	"count(*)",
	"WHERE fields" => "name",
	"AND nick" => "nick"
);
// 결과: select count(*) table WHERE fields='name' AND nick=’nick’;


$mysqli = new mysql();
$mysqli->set_table_name( $table );
$mysqli->select_Query($section);

$row = $mysqli->sql_fetch();
print_r($row);

Example #2

						
$section = array(
	"field1",
	"field2",
	"WHERE fields" => "name",
	"AND num" => array('>' => 1)
);
// 결과: select field1, field2 table WHERE fields='name' AND num > ‘1’;


$mysqli = new mysql();
$mysqli->set_table_name( $table );
$mysqli->select_Query($section);

$row = $mysqli->sql_fetch();
print_r($row);

Example #3

						
$section = array(
	"field1",
	"field2",
	"WHERE fields" => "name",
	"AND num" => array('>' => 1),
	"ORDER BY" => "date DESC",
	"LIMIT" => "0, 10"
);
// 결과: select field1, field2 table WHERE fields='name' AND num > 1 ORDER BY date DESC LIMIT 0, 10;


$mysqli = new mysql();
$mysqli->set_table_name( $table );
$mysqli->select_Query($section);

$row = $mysqli->sql_fetch();
print_r($row);

다중 SELECT

형식: sql_mquery( query, resulttype );

Example #1

						
$raw = array();
$raw[] = "select key1 from table1 WHERE date > 1 LIMIT 1";
$raw[] = "select key2 from table2 WHERE date > 1 LIMIT 1";
$raw[] = "select key3 from table3 WHERE date > 1 LIMIT 1";

$mysqli = new mysql();
$row = $mysqli->sql_mquery($raw, MYSQLI_BOTH);

print_r($row);

Example #2

Example #1의 결과를 다음과 같이 작업할 수 있습니다.

						
$raw = array();
$mysqli = new mysql();

// SELECT 질의 #1
$mysqli->set_table_name( 'table1' );
$mysqli->select_Query(
	array(
		"key1",
		"WHERE date" => array(">" => 1),
		"LIMIT" => 1
	)
);
$raw[] = $mysqli->output;

// SELECT 질의 #2
$mysqli->set_table_name( 'table2' );
$mysqli->select_Query(
	array(
		"key2",
		"WHERE date" => array(">" => 1),
		"LIMIT" => 1
	)
);
$raw[] = $mysqli->output;

// SELECT 질의 #3
$mysqli->set_table_name( 'table3' );
$mysqli->select_Query(
	array(
		"key3",
		"WHERE date" => array(">" => 1),
		"LIMIT" => 1
	)
);
$raw[] = $mysqli->output;

$row = $mysqli->sql_mquery($raw, MYSQLI_BOTH);

print_r($row);

UPDATE

형식: update_Query( query );

Example #1

						
$section = array(
	"key1"=>”value”,
	“key2”=>”value”,
	"WHERE fields" => "name",
	"AND nick" => "nick"
);
// 결과: update table set key1=’value', key2=’value’ WHERE fields='name' AND nick=’nick’;


$mysqli = new mysql();
$mysqli->set_table_name( $table );
$mysqli->update_Query($section);

if( $mysqli->sql_query() )
{
	// 자료 입력 성공시 처리
}

Example #2

						
$section = array(
	"key1" => array("+" => 1),
	"WHERE fields" => "name",
	"AND nick" => "nick"
);
// 결과: update table set key1=key1+1 WHERE fields='name' AND nick=’nick’;


$mysqli = new mysql();
$mysqli->set_table_name( $table );
$mysqli->update_Query($section);

if( $mysqli->sql_query() )
{
	// 자료 입력 성공시 처리
}

INSERT

형식: insert_Query( query, how );

Example #1

						
$section = array(
	"key1"=>”value”,
	“key2”=>”value”
);
// 결과: insert into from table (key1, key2) value(“value”, “value”);


$mysqli = new mysql();
$mysqli->set_table_name( $table );
$mysqli->insert_Query($section);

if( $mysqli->sql_query() )
{
	// 자료 입력 성공시 처리
}

DELETE

형식: delete_Query( query );

Example #1

						
$section = array(
	"WHERE fields" => "name",
	"AND nick" => "nick"
);
// 결과: delete from table WHERE fields=’name’ AND nick=’nick’;


$mysqli = new mysql();
$mysqli->set_table_name( $table );
$mysqli->delete_Query($section);

if( $mysqli->sql_query() )
{
	// 자료 삭제 성공시 처리
}

Example #2

query 인수를 비웠을 때의 결과입니다.

							
$mysqli = new mysql();
$mysqli->set_table_name( $table );
$mysqli->delete_Query();

// 결과: delete from table;

if( $mysqli->sql_query() )
{
	// 자료 삭제 성공시 처리
}


DUPLICATE

형식: duplicate_Query( query );

Example #1

						
$section = array(
	// UPDATE 자료
	array(
		"key1"=>”value”,
		“key2”=>”value”
	),
	// INSERT 자료
	"name"=>"habony",
	"ip"=>"127.0.0.1"
);

// 결과: insert into from table (key1, key2, name, ip) value(“value”, “value”, "habony", "127.0.0.1")
         ON DUPLICATE KEY UPDATE key1='value', key2='value';

$mysqli = new mysql();
$mysqli->set_table_name( $table );
$mysqli->duplicate_Query($section);

if( $mysqli->sql_query() )
{
	// 자료 입력 성공시 처리
}

사용자 정의 질의

형식: sql_query( query );

Example #1

						
$section = "insert into from table (key1, key2, name, ip) 
value('" . $mysqli->sql_escape('value') . "', '" . $mysqli->sql_escape('value') . "', '" . $mysqli->sql_escape('habony') . "', '" . $mysqli->sql_escape('127.0.0.1') . "');";

$mysqli = new mysql();
if( $mysqli->sql_query( $section ) )
{
	// 자료 입력 성공시 처리
}

Example #2

						
$section = "UPDATE table SET name='" . $mysqli->sql_escape('habony') . "', age='" . $mysqli->sql_escape('25') . "';";

$mysqli = new mysql();
if( $mysqli->sql_query( $section ) )
{
	// 자료 입력 성공시 처리
}

ORDER BY

문자열(또는 배열)로 키워드를 설정할 수 있습니다.

Example #1

문자열를 지정하여 키워드를 설정합니다.

						
$section = array(
	"field1",
	"field2",
	"WHERE fields" => "name",
	"AND num" => array('>' => 1),
	"ORDER BY" => "date DESC",
	"LIMIT" => "0, 10"
);
// 결과: select field1, field2 table WHERE fields='name' AND num > 1 ORDER BY date DESC LIMIT 0, 10;

Example #2

배열을 지정하여 키워드를 설정합니다.

						
$section = array(
	"WHERE fields" => "name",
	"OR num" => array('>' => 1),
	"ORDER BY" => array("myid", "date DESC")
);
// 결과: select * table WHERE fields='name' OR num > 1 ORDER BY myid, date DESC;

LIKE

Example #1

						
$section = array(
	"field",
	"WHERE fields" => array("LIKE" => "name")
);
// 결과: select field table WHERE fields LIKE '%name%';

LIMIT

Example #1

						
$section = array(
	"myid",
	"WHERE fields" => "name",
	"AND date" => array(">=" => '2015-01-01'),
	"LIMIT" => "0, 10"
);
// 결과: select myid table WHERE fields='name' AND date >= '2015-01-01' LIMIT 0, 10;

COUNT

Example #1

						
$section = array(
	"key" => array("+" => 1200),
	"WHERE user" => "name"
);
// 결과: update table set key=key+1200 WHERE user='name';

Example #2

						
$section = array(
	"key" => array("-" => 900),
	"WHERE user" => "name"
);
// 결과: update table set key=key-900 WHERE user='name';