此文章主要向大家讲述的是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()函数获取出错代号。
【编辑推荐】