繁体   English   中英

无法使用mysqli_connect连接,但mysql_connect有效..?

[英]Can't connect using mysqli_connect, but mysql_connect works..?

我获得了直接从我的托管服务提供商(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');
?>

错误:

警告:mysqli_connect():( HY000 / 2005):未知的MySQL服务器主机'localhost / tmp / mysql5.sock'(1)在/ homepages / ... ... ... / buge.php第10行连接错误到MySQL服务器

凭证都是一样的。 实际上,它在使用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实例。

快速浏览mysqli_connect()的手册页

mysqli mysqli_connect([string $ host = ini_get(“mysqli.default_host”)[,string $ username = ini_get(“mysqli.default_user”)[,string $ passwd = ini_get(“mysqli.default_pw”)[,string $ dbname = “”[,int $ port = ini_get(“mysqli.default_port”)[,string $ socket = ini_get(“mysqli.default_socket”)]]]]]])

......和:

主办

可以是主机名IP地址 将NULL值或字符串“localhost”传递给此参数,将假定本地主机。 如果可能,将使用管道而不是TCP / IP协议。

插座

指定应使用的套接字或命名管道。

我承认手册页可以使用一个例子,但是没有你正在尝试的语法的痕迹。


请记住, mysqli一个与传统mysql 不同的扩展

resource mysql_connect([string $ server = ini_get(“mysql.default_host”)[,string $ username = ini_get(“mysql.default_user”)[,string $ password = ini_get(“mysql.default_password”)[,bool $ new_link = false [,int $ client_flags = 0]]]]])

......其中:

服务器

MySQL服务器。 它还可以包含端口号。 例如“hostname:port”或本地套接字的路径,例如localhost的“:/ path / to / socket”。

我认为你的主机名应该是:

localhost:/tmp/mysql5.sock

并不是:

localhost/tmp/mysql5.sock

参考

或者似乎还有其他方法可以找到您的主机,因此您应该尝试从面板中获取数据。

请添加mysql.default_socket = /tmp/mysql5.sock; 在服务器根目录的php.ini中的这一行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM