此文章主要向大家講述的是MySQL數據庫中的MySQL_real_connect 連接參數的基本設置,我們在前一篇文章講述關於進行MySQL(和PHP搭配之最佳組合)源程序代碼的編譯鏈接,但是沒有講述運行情況,在按照上一篇文章代碼下進行編譯運行後。
發現無法鏈接數據庫文件,顯然是在MySQL(和PHP搭配之最佳組合)_real_connect)函數中出現了問題。在MySQL(和PHP搭配之最佳組合)的英文手冊中找到關於MySQL(和PHP搭配之最佳組合)_real_connect()的如下描述:
函數原型描述 MySQL數據庫*MySQL(和PHP搭配之最佳組合)_real_connect(MySQL(和PHP搭配之最佳組合) *MySQL(和PHP搭配之最佳組合), const char *host, const char
- *user,
- const char *passwd, const char *db, unsigned int port, const char *unix_socket,
- unsigned long client_flag)
- Description
- MySQL(和PHP搭配之最佳組合)_real_connect() attempts to establish a connection to a MySQL(和PHP搭配之最佳組合) database engine
- running on host. MySQL(和PHP搭配之最佳組合)_real_connect() must complete successfully before you can
- execute any other API functions that require a valid MySQL(和PHP搭配之最佳組合) connection handle structure.
- The parameters are specified as follows:
- *
- The first parameter should be the address of an existing MySQL(和PHP搭配之最佳組合) structure. Before
- calling MySQL(和PHP搭配之最佳組合)_real_connect() you must call MySQL(和PHP搭配之最佳組合)_init() to initialize the MySQL(和PHP搭配之最佳組合)
- structure. You can change a lot of connect options with the MySQL(和PHP搭配之最佳組合)_options() call.
- See Section 17.2.3.47, “MySQL(和PHP搭配之最佳組合)_options()”.
- *
- The value of host may be either a hostname or an IP address. If host is NULL or the
- string "localhost", a connection to the local host is assumed. If the OS supports sockets
- (Unix) or named pipes (Windows), they are used instead of TCP/IP to connect to the server.
- *
- The user parameter contains the user's MySQL(和PHP搭配之最佳組合) login ID. If user is NULL or the empty
- string "", the current user is assumed. Under Unix, this is the current login name. Under
- Windows ODBC, the current username must be specified explicitly. See Section 18.1.9.2,
- “Configuring a MyODBC DSN on Windows”.
- *
- The passwd parameter contains the password for user. If passwd is NULL, only entries
- in the user table for the user that have a blank (empty) password field are checked for a
- match. This allows the database administrator to set up the MySQL(和PHP搭配之最佳組合) privilege system in
- such a way that users get different privileges depending on whether they have specified
- a password.
- Note: Do not attempt to encrypt the password before calling MySQL(和PHP搭配之最佳組合)_real_connect();
- password encryption is handled automatically by the client API.
- *
- db is the database name. If db is not NULL, the connection sets the default database
- to this value.
- *
- If port is not 0, the value is used as the port number for the TCP/IP connection. Note
- that the host parameter determines the type of the connection.
- *
- If unix_socket is not NULL, the string specifies the socket or named pipe that should
- be used. Note that the host parameter determines the type of the connection.
- *
- The value of client_flag is usually 0, but can be set to a combination of the following
- flags to enable certain features:
上面描述了五個參數的主要取值,MySQL數據庫 *為MySQL(和PHP搭配之最佳組合)_init函數返回的指針,host為null或 // localhost時鏈接的是本地的計算機,當MySQL(和PHP搭配之最佳組合)默認安裝在unix或類unix)系統中,root賬戶是沒// 有密碼的,因此用戶名使用root,密碼為null,當db為空的時候,函數鏈接到默認數據庫,在進行 // MySQL(和PHP搭配之最佳組合)安裝時會存在默認的test數據庫,因此此處可以使用test數據庫名稱,port端口為0,使用 // unix連接方式,unix_socket為null時,表明不使用socket或管道機制,最後一個參數經常設置為0
- Flag Name Flag Description
- CLIENT_COMPRESS Use compression protocol.
- CLIENT_FOUND_ROWS Return the number of found (matched) rows, not the number of
- changed rows.
- CLIENT_IGNORE_SPACE Allow spaces after function names. Makes all functions names
- reserved words.
- CLIENT_INTERACTIVE Allow interactive_timeout seconds (instead of wait_timeout
- seconds) of inactivity before closing the connection. The client's session wait_timeout
- variable is set to the value of the session interactive_timeout variable.
- CLIENT_LOCAL_FILES Enable LOAD DATA LOCAL handling.
- CLIENT_MULTI_STATEMENTS Tell the server that the client may send multiple
- statements in a single string (separated by ‘;’). If this flag is not set,
- multiple-statement execution is disabled. Added in MySQL(和PHP搭配之最佳組合) 4.1.
- CLIENT_MULTI_RESULTS Tell the server that the client can handle multiple result
- sets from multiple-statement executions or stored procedures. This is automatically
- set if CLIENT_MULTI_STATEMENTS is set. Added in MySQL(和PHP搭配之最佳組合) 4.1.
- CLIENT_NO_SCHEMA Don't allow the db_name.tbl_name.col_name syntax. This is for
- ODBC. It causes the parser to generate an error if you use that syntax, which is useful
- for trapping bugs in some ODBC programs.
- CLIENT_ODBC The client is an ODBC client. This changes MySQL(和PHP搭配之最佳組合)d to be more
- ODBC-friendly.
- CLIENT_SSL Use SSL (encrypted protocol). This option should not be set by
- application programs; it is set internally in the client library. Instead, use
- MySQL(和PHP搭配之最佳組合)_ssl_set() before calling MySQL(和PHP搭配之最佳組合)_real_connect().
- For some parameters, it is possible to have the value taken from an option file rather
- than from an explicit value in the MySQL(和PHP搭配之最佳組合)_real_connect() call. To do this, call
- MySQL(和PHP搭配之最佳組合)_options() with the MySQL(和PHP搭配之最佳組合)_READ_DEFAULT_FILE or MySQL(和PHP搭配之最佳組合)_READ_DEFAULT_GROUP option
- before calling MySQL(和PHP搭配之最佳組合)_real_connect(). Then, in the MySQL(和PHP搭配之最佳組合)_real_connect() call, specify
- the “no-value” value for each parameter to be read from an option file:
- *
- For host, specify a value of NULL or the empty string ("").
- *
- For user, specify a value of NULL or the empty string.
- *
- For passwd, specify a value of NULL. (For the password, a value of the empty string in
- the MySQL(和PHP搭配之最佳組合)_real_connect() call cannot be overridden in an option file, because the empty
- string indicates explicitly that the MySQL(和PHP搭配之最佳組合) account must have an empty password.)
- *
- For db, specify a value of NULL or the empty string.
- *
- For port, specify a value of 0.
- *
- For unix_socket, specify a value of NULL.
- If no value is found in an option file for a parameter, its default value is used as
- indicated in the descriptions given earlier in this section.
- Return Values
- A MySQL(和PHP搭配之最佳組合)* connection handle if the connection was successful, NULL if the connection
- was unsuccessful. For a successful connection, the return value is the same as the value
- of the first parameter.
返回值:當連接成功時,返回MySQL數據庫連接句柄,失敗,返回NULL。當成功時,返回值與第一個參數值是// 相同的。
- Errors
- *
- CR_CONN_HOST_ERROR
- Failed to connect to the MySQL(和PHP搭配之最佳組合) server.
- *
- CR_CONNECTION_ERROR
- Failed to connect to the local MySQL(和PHP搭配之最佳組合) server.
- *
- CR_IPSOCK_ERROR
- Failed to create an IP socket.
- *
- CR_OUT_OF_MEMORY
- Out of memory.
- *
- CR_SOCKET_CREATE_ERROR
- Failed to create a Unix socket.
- *
- CR_UNKNOWN_HOST
- Failed to find the IP address for the hostname.
- *
- CR_VERSION_ERROR
- A protocol mismatch resulted from attempting to connect to a server with a client
- library that uses a different protocol version. This can happen if you use a very old
- client library to connect to a new server that wasn't started with the --old-protocol
- option.
- *
- CR_NAMEDPIPEOPEN_ERROR
- Failed to create a named pipe on Windows.
- *
- CR_NAMEDPIPEWAIT_ERROR
- Failed to wait for a named pipe on Windows.
- *
- CR_NAMEDPIPESETSTATE_ERROR
- Failed to get a pipe handler on Windows.
- *
- CR_SERVER_LOST
- If connect_timeout > 0 and it took longer than connect_timeout seconds to connect to
- the server or if the server died while executing the init-command.
因此MySQL(和PHP搭配之最佳組合)_real_connect()函數調用為:
MySQL(和PHP搭配之最佳組合)_real_connect(MySQL數據庫,"localhost","root",NULL,"test",0,NULL,0);
判斷是否出錯,出錯調用MySQL(和PHP搭配之最佳組合)_error()函數顯示出錯信息,或使用MySQL(和PHP搭配之最佳組合)_errno()函數獲取出錯代號。