2024年PHP开发者大会日本站

mysql_connect

(PHP 4, PHP 5)

mysql_connect打开到MySQL服务器的连接

警告

此扩展在PHP 5.5.0中已弃用,并在PHP 7.0.0中移除。应该改用MySQLiPDO_MySQL 扩展。另见 MySQL:选择API 指南。此函数的替代方案包括

描述

mysql_connect(
    字符串 $server = ini_get("mysql.default_host"),
    字符串 $username = ini_get("mysql.default_user"),
    字符串 $password = ini_get("mysql.default_password"),
    布尔值 $new_link = false,
    整数 $client_flags = 0
): 资源|false

打开或重用与MySQL服务器的连接。

参数

server

MySQL服务器。它还可以包含端口号,例如“主机名:端口”或本地套接字的路径,例如“:/path/to/socket”(针对localhost)。

如果PHP指令 mysql.default_host 未定义(默认值),则默认值为'localhost:3306'。在SQL安全模式下,此参数将被忽略,始终使用值'localhost:3306'。

username

用户名。默认值由 mysql.default_user 定义。在SQL安全模式下,此参数将被忽略,并使用拥有服务器进程的用户名称。

password

密码。默认值由 mysql.default_password 定义。在SQL安全模式下,此参数将被忽略,并使用空密码。

new_link

如果使用相同的参数第二次调用mysql_connect(),则不会建立新的链接,而是返回已打开链接的链接标识符。new_link参数修改此行为,使mysql_connect() 始终打开一个新的链接,即使之前已使用相同的参数调用过mysql_connect()。在SQL安全模式下,此参数将被忽略。

client_flags

client_flags参数可以是以下常量的组合:128(启用LOAD DATA LOCAL处理)、MYSQL_CLIENT_SSLMYSQL_CLIENT_COMPRESSMYSQL_CLIENT_IGNORE_SPACEMYSQL_CLIENT_INTERACTIVE。阅读关于 MySQL客户端常量 的部分以获取更多信息。在SQL安全模式下,此参数将被忽略。

返回值

成功时返回MySQL链接标识符,失败时返回 false

范例

示例 #1 mysql_connect() 例子

<?php
$link
= mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
die(
'无法连接: ' . mysql_error());
}
echo
'连接成功';
mysql_close($link);
?>

示例 #2 使用hostname:port语法的mysql_connect() 例子

<?php
// 我们连接到 example.com 和端口 3307
$link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');
if (!
$link) {
die(
'无法连接: ' . mysql_error());
}
echo
'连接成功';
mysql_close($link);

// 我们连接到 localhost 端口 3307
$link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');
if (!
$link) {
die(
'无法连接: ' . mysql_error());
}
echo
'连接成功';
mysql_close($link);
?>

示例 #3 使用":/path/to/socket"语法的mysql_connect() 例子

<?php
// 我们连接到 localhost 和套接字,例如 /tmp/mysql.sock

// 变体 1:省略 localhost
$link = mysql_connect(':/tmp/mysql', 'mysql_user', 'mysql_password');
if (!
$link) {
die(
'无法连接: ' . mysql_error());
}
echo
'连接成功';
mysql_close($link);


// 变体 2:使用 localhost
$link = mysql_connect('localhost:/tmp/mysql.sock', 'mysql_user', 'mysql_password');
if (!
$link) {
die(
'无法连接: ' . mysql_error());
}
echo
'连接成功';
mysql_close($link);
?>

注释

注释:

每当你指定"localhost"或"localhost:port"作为服务器时,MySQL客户端库将覆盖此设置并尝试连接到本地套接字(Windows上为命名管道)。如果你想使用TCP/IP,请使用"127.0.0.1"代替"localhost"。如果MySQL客户端库尝试连接到错误的本地套接字,则应在php.ini中将正确的路径设置为 mysql.default_host,并将服务器字段留空。

注释:

除非通过显式调用mysql_close()提前关闭,否则服务器链接将在脚本执行结束时关闭。

注释:

"无法创建TCP/IP套接字(10106)"错误通常意味着variables_order配置指令不包含字符E。在Windows上,如果环境未被复制,则SYSTEMROOT环境变量将不可用,PHP将加载Winsock时出现问题。

参见

添加注释

用户贡献的注释 3 条注释

nicodenboer at yahoo dot com
12 年前
如果您使用 utf8,请小心。

您的数据库的 db.opt 文件应包含以下几行:
default-character-set=utf8
default-collation=utf8_general_ci

这意味着您的数据库被创建为使用 utf8 字符集。
一种实现方法是:
CREATE DATABASE my_database DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

然后,从 PHP 连接到它之后,您应该使用:
mysql_set_charset("UTF8", $connection);

如果您不这样做,如果其他软件正在读取和写入同一个数据库,您将遇到严重的问题!!!!!!
VTool
8 年前
fcgid_module modules/mod_fcgid.so
FcgidMaxRequestLen 209715200
FcgidConnectTimeout 240
FcgidIOTimeout 240
FcgidBusyScanInterval 240
FcgidBusyTimeout 240
# 这行指令告诉 Web 服务器识别一种新类型 (php)
AddHandler fcgid-script .php
# 这行指示 Web 服务器 PHP 的安装位置。
FcgidInitialEnv PHPRC "c:/php"
# 这行指示 Web 服务器应该执行应用程序
# php-cgi.exe,当客户端(浏览器)请求扩展名为
# .php 的页面时。
FcgidWrapper "c:/php/php-cgi.exe" .php
# 通过这行,我们赋予客户端访问/执行 .php 文件的必要权限。
#
<Directory "c:/Apache/htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride None
Allow from all
</Directory>
cory dot mawhorter gmail.com
15 年前
希望这能帮某些人省去一些麻烦。

我的开发电脑是 Windows 系统,运行的是 WampServer。在数据库活动极度频繁的时期后,我经常遇到 PHP 无法连接到 MySQL 的问题。

长话短说,这是因为我没有通过命名管道运行 mysql,而 Windows 用完了可用于为 PHP 提供服务的端口。显然,在 Windows 上,您可以使用 5000 个端口,一旦打开,它们会在释放之前保持 120 秒。这会导致 mysql/网络问题,因为每次连接都会请求一个新端口。

您可以在以下网址了解更多关于此问题的信息:
(链接太长,不得不拆分)
https://dev.mysqlserver.cn/doc/refman/5.0/en
/can-not-connect-to-server.html#can-not-connect-to-server-on-windows
?>

由于 mysql 在本地主机上,我可以只启用命名管道(如果您不需要网络,则应该这样设置 mysql)来解决问题,而不是使用该页面上列出的解决方法。

详情请见:
https://dev.mysqlserver.cn/tech-resources
/articles/securing_mysql_windows.html
To Top