mysqli::real_connect

(PHP 5, PHP 7, PHP 8)

mysqli::real_connect -- mysqli_real_connect — mysql 서버에 대한 연결을 엽니다.


설명

객체 지향 스타일

public mysqli::real_connect(
    string $host = ?,
    string $username = ?,
    string $passwd = ?,
    string $dbname = ?,
    int $port = ?,
    string $socket = ?,
    int $flags = ?
): bool
                

절차적 스타일

mysqli_real_connect(
    mysqli $link,
    string $host = ?,
    string $username = ?,
    string $passwd = ?,
    string $dbname = ?,
    int $port = ?,
    string $socket = ?,
    int $flags = ?
): bool
                

MySQL 데이터베이스 엔진에 대한 연결을 설정합니다.

이 함수는 mysqli_connect()와 다릅니다:

  • mysqli_real_connect()mysqli_init() 함수에 의해 생성되어야 하는 유효한 객체가 필요합니다.
  • mysqli_options() 함수를 사용하여 다양한 연결 옵션을 설정할 수 있습니다.
  • flags 매개변수가 있습니다.

매개변수

mysql
절차적 스타일 전용: mysqli_connect() 또는 mysqli_init()에 의해 반환된 mysqli 객체
host
호스트 이름 또는 IP 주소일 수 있습니다. null 값 또는 "localhost" 문자열을 이 매개변수에 전달하면 로컬 호스트가 가정됩니다. 가능하면 TCP/IP 프로토콜 대신 파이프가 사용됩니다.
username
MySQL 사용자 이름.
passwd
제공되거나 null인 경우 MySQL 서버는 암호만 없는 사용자 레코드에 대해 사용자 인증을 시도합니다. 이렇게 하면 하나의 사용자 이름을 다른 권한으로 사용할 수 있습니다(암호 제공 여부에 따라 다름).
dbname
제공된 경우 쿼리를 수행할 때 사용할 기본 데이터베이스를 지정합니다.
port
MySQL 서버에 연결을 시도할 포트 번호를 지정합니다.
socket
사용해야 하는 소켓 또는 명명된 파이프를 지정합니다.

메모: socket 매개변수를 지정하면 MySQL 서버에 연결할 때 사용할 연결 유형이 명시적으로 결정되지 않습니다. MySQL 데이터베이스에 연결하는 방법은 host 매개변수에 의해 결정됩니다.

flags
매개변수 flags를 사용하여 다양한 연결 옵션을 설정할 수 있습니다.

지원되는 플래그

이름 설명
MYSQLI_CLIENT_COMPRESS 압축 프로토콜 사용
MYSQLI_CLIENT_FOUND_ROWS 영향을 받는 행의 수가 아닌 일치하는 행의 수를 반환합니다.
MYSQLI_CLIENT_IGNORE_SPACE 함수 이름 뒤에 공백을 허용하십시오. 모든 함수 이름을 예약어로 만듭니다.
MYSQLI_CLIENT_INTERACTIVE 연결을 닫기 전에 비활성 시간(wait_timeout 초 대신)을 interactive_timeout 초로 허용합니다.
MYSQLI_CLIENT_SSL SSL(암호화) 사용
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT MYSQLI_CLIENT_SSL과 유사하지만 제공된 SSL 인증서의 유효성 검사를 비활성화합니다. 이것은 MySQL Native Driver 및 MySQL 5.6 이상을 사용하여 설치하는 경우에만 해당됩니다.

메모: 보안상의 이유로 MULTI_STATEMENT 플래그는 PHP에서 지원되지 않습니다. 여러 쿼리를 실행하려면 mysqli_multi_query() 함수를 사용하십시오.


반환 값

성공하면 true를, 실패하면 false를 반환합니다.


Examples

예제 #1 mysqli::real_connect() 예제

객체 지향 스타일

                  
<?php

$mysqli = mysqli_init();
if (!$mysqli) {
    die('mysqli_init failed');
}

if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
    die('Setting MYSQLI_INIT_COMMAND failed');
}

if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
    die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}

if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

echo 'Success... ' . $mysqli->host_info . "\n";

$mysqli->close();
?>
                  
                

mysqli 클래스 확장 시 객체 지향 스타일

                  
<?php

class foo_mysqli extends mysqli {
    public function __construct($host, $user, $pass, $db) {
        parent::init();

        if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
            die('Setting MYSQLI_INIT_COMMAND failed');
        }

        if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
            die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
        }

        if (!parent::real_connect($host, $user, $pass, $db)) {
            die('Connect Error (' . mysqli_connect_errno() . ') '
                    . mysqli_connect_error());
        }
    }
}

$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db');

echo 'Success... ' . $db->host_info . "\n";

$db->close();
?>
                  
                

절차적 스타일

                  
<?php

$link = mysqli_init();
if (!$link) {
    die('mysqli_init failed');
}

if (!mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
    die('Setting MYSQLI_INIT_COMMAND failed');
}

if (!mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
    die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}

if (!mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db')) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

echo 'Success... ' . mysqli_get_host_info($link) . "\n";

mysqli_close($link);
?>
                  
                

위의 예는 다음을 출력합니다.

Success... MySQL host info: localhost via TCP/IP
                

노트

메모:

MySQLnd는 항상 서버 기본 charset을 가정합니다. 이 문자 집합은 mysqlnd가 사용할 연결 핸드 셰이크/인증 중에 전송됩니다.

Libmysqlclient는 my.cnf에 설정된 기본 charset을 사용하거나 mysqli_real_connect()를 호출하기 전에 mysqli_init() 이후에 mysqli_options()를 명시적으로 호출하여 사용합니다.


기타