我有以下代码:
$username = 'username';
$password = 'password';
$host = 'localhost';
$db = 'dbname';
$dbh = new mysqli('p:'.$host, $username, $password, $db)
or die('no connection to server');
但是我收到以下错误
PHP Warning: mysqli::mysqli() [<a href='function.mysqli-mysqli'>function.mysqli-mysqli</a>]: (HY000/2005): Unknown MySQL server host 'p:localhost' (1) in /var/www/vhosts/politiker.lu/httpdocs/includes/sql.php on line 8
这引起了我的兴趣,因为完全相同的代码适用于我的开发环境。既然我想在我的生产服务器上设置它,它就不起作用了。有什么想法吗?
注意:我对服务器不太满意,请原谅我,如果错误应该是微不足道的。
以下是版本:
开发PHP(5.3.3-1ubuntu9.1)+ MySQL(5.1.49-1ubuntu8.1)
制作PHP(5.2.4-2ubuntu5.12)+ MySQL(5.0.51a)
答案 0 :(得分:6)
像这样取出p:
:
$dbh = new mysqli($host, $username, $password, $db)
or die('no connection to server');
答案 1 :(得分:3)
只是添加这个,因为我不认为它很清楚,但问题肯定是你的PHP生产版本。直到5.3之后才添加mysqli扩展的持久连接,因为它们之前引起了头痛。
有些主机可能安装了不同版本的PHP ......我今天意识到我可以让HostGator使用PHP 5.3!我只需要添加到我的.htaccess文件中:
Action application/x-hg-php53 /cgi-sys/php53
AddType application/x-hg-php53 .php
答案 2 :(得分:2)
我想你错过了这台服务器中的mysqli包。试试:
sudo apt-get install php5-mysqli
如果apt-get说它已经安装了尝试ping localhost,如果不解析编辑/ etc / hosts并检查localhost指向127.0.0.1的行 应该在那里,如果没有,你的服务器可怕的配置!
做一个
ifconfig
并检查你是否得到这样的输出......
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
答案 3 :(得分:0)
您需要指定MySQL服务器的实际位置。对于开发,它是localhost
(最有可能),只是如何配置它。但对于生产服务器来说,它将是另一回事。我怀疑它应该是localhost
。