我获得了直接从我的托管服务提供商(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');
?>
ERROR:
警告:mysqli_connect():( HY000 / 2005):未知的MySQL服务器主机 '本地主机/ TMP / mysql5.sock' (1)在/ homepages / ... ... ... /purge.php 第10行连接MySQL服务器时出错
凭据都是一样的。实际上,它在使用mysql_connect()进行连接时有效,但它并不想使用mysql_connect()!有什么可能导致问题的想法?
答案 0 :(得分:10)
要么错误解释了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实例。
答案 1 :(得分:2)
快速浏览mysqli_connect()'s manual page:
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&#34 ;)[,字符串 $ socket = ini_get(" mysqli.default_socket")]]]]]])
......和:
<强>宿主强>
可以是主机名或 IP地址。传递NULL值或 字符串&#34; localhost&#34;对于此参数,假定为本地主机。 如果可能,将使用管道而不是TCP / IP协议。
<强>插座强>
指定应使用的套接字或命名管道。
我承认手册页可以使用示例,但您没有尝试过的语法痕迹。
请记住 mysqli 与旧版 mysql 不同的扩展程序:
资源mysql_connect([string $ server = ini_get(&#34; mysql.default_host&#34;)[,string $ username = ini_get(&#34; mysql.default_user&#34;) [,string $ password = ini_get(&#34; mysql.default_password&#34;)[,bool $ new_link = false [,int $ client_flags = 0]]]]])
......其中:
服务器强>
MySQL服务器。它还可以包含端口号。例如&#34;主机名:端口&#34;或者本地套接字的路径,例如&#34;:/路径/到/插座&#34;对于localhost。
答案 2 :(得分:0)
我认为你的主机名应该是:
localhost:/tmp/mysql5.sock
而不是:
localhost/tmp/mysql5.sock
或者似乎还有alternative method找到您的主机,因此您应该尝试从面板中获取数据。
答案 3 :(得分:0)
请加上 mysql.default_socket = /tmp/mysql5.sock; 在服务器根目录的php.ini中的这一行。