使用 PDO 连接 MySQL

Posted

技术标签:

【中文标题】使用 PDO 连接 MySQL【英文标题】:Connect MySQL Using PDO 【发布时间】:2014-10-28 07:15:04 【问题描述】:

我正在使用以下字符串连接到本地主机上的 mysql 数据库(我没有 root 访问权限)。我确实阅读了 Stack Overflow 上的相关帖子。

我在 php 文件中定义了这个:

ini_set('mysqli.default_socket', '/tmp/mysql5.sock');
ini_set('mysql.default_socket', '/tmp/mysql5.sock');
ini_set('pdo_mysql.default_socket', '/tmp/mysql5.sock');

当我使用时:

'mysql:localhost:/tmp/mysql5.sock;dbname='.DB_NAME.';charset=utf8'

'mysql:unix_socket:/tmp/mysql5.sock;dbname='.DB_NAME.';'

我知道了

SQLSTATE[HY000] [2002] 没有这样的文件或目录

当我使用时:

'mysql:host=127.0.0.1;dbname='.DB_NAME.';'

我知道了

SQLSTATE[HY000] [2002] 连接被拒绝

任何人都可以看看,非常感谢!!

【问题讨论】:

我不知道您为什么尝试使用ini_set() 来设置套接字并使用它们。在您的连接字符串中,您缺少用户名和密码。在你的连接字符串中尝试这样的事情:$pdo = new PDO('mysql:host=localhost;dbname='.DBNAME, 'user', 'password'); 您的服务器是否已启动? /tmp/mysq5.sock 存在吗?您能否确认您可以使用其他工具连接到它? 【参考方案1】:

正如我在评论中提到的,我真的不知道您为什么要为您的MySQLconnection 使用套接字。另外,在您的试用中,您总是缺少用户名和密码。所以请尝试这样的事情:

$pdo = new PDO('mysql:host=localhost;dbname='.DBNAME, 'user', 'password');

【讨论】:

【参考方案2】:

我有同样的问题,并通过在主机中添加“unix_socket”来解决它,如下所示:

$host = 'localhost;unix_socket=/tmp/mysql5.sock';

这样你就有了

'mysql:host=' .$host .';dbname='.DB_NAME.';'

【讨论】:

以上是关于使用 PDO 连接 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

php中使用mysqli和pdo扩展,测试连接mysql数据库的效率。

在连接类中使用 PDO 时如何显示 mysql 错误?

PHP PDO-MYSQL:如何跨不同类使用数据库连接

PHP 连接 MySQL

php使用pdo连接mysql数据库如何设置发送的字符集?

php使用PDO连接mysql数据库