我直接从我的托管服务提供商 (1and1) 那里获得了连接到 MySQL 的凭据。但是,当我尝试连接以下代码时:
$db_hostname = 'localhost/tmp/mysql5.sock';
$db_database = 'db543062602';
$db_username = '***********';
$db_password = '***********';
$dbc = mysqli_connect($db_hostname, $db_username, $db_password, $db_database)
or die('Error connecting to MySQL server');
?>
错误:
Warning: mysqli_connect(): (HY000/2005): Unknown MySQL server host 'localhost/tmp/mysql5.sock' (1) in /homepages/... ... ... /purge.php on line 10 Error connecting to MySQL server
凭据都是一样的。事实上,它在使用 mysql_connect() 连接时工作,但它不想使用 mysql_connect() 工作!关于可能导致问题的原因有什么想法吗?
最佳答案
要么您误解了 1&1 的说明,要么他们弄错了。
阅读 mysqli_connect() 的手册页.它表明第一个参数应该是主机名,可以是名称,也可以是 IP。不要在该参数中包含套接字。
您可以选择将套接字文件指定为第六个参数。
/* WRONG */
mysqli_connect('localhost/tmp/mysql5.sock', ... );
/* WRONG */
mysqli_connect('localhost:/tmp/mysql5.sock', ... );
/* RIGHT */
mysqli_connect('localhost', $db_username, $db_password, $db_database, null, '/tmp/mysql5.sock');
此外,我想知道为什么他们甚至要求您指定套接字。他们应该在主机的 php.ini 文件中定义默认值,因此您不必这样做。除非他们可能在同一台主机上运行多个 mysqld 实例。
关于php - 无法使用 mysqli_connect 进行连接,但 mysql_connect 有效..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26042994/