[英]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”。
请添加mysql.default_socket = /tmp/mysql5.sock; 在服务器根目录的php.ini中的这一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.