我正在从mysql迁移到mysqli。当前我的服务器同时运行pdo,mysql和mysqli。另外,PHP 5.6.34在docker中运行。 MySQL版本是10.2.16-MariaDB-log MariaDB服务器,它在主机上运行。操作系统是CentOS Linux7。
连接到数据库的脚本是:
if($mysqli){//never works
$res = $GLOBALS["___mysqli_ston"] = mysqli_connect("localhost", "user", "pass" , NULL, 0, 'var/sockets/mysql.sock');
}
else{//always works
$res = mysql_connect(':/var/sockets/mysql.sock', "user", "pass" );
}
if (!$res){
die("err");
}
使用mysql连接到db可以正常工作。但是每次我尝试使用mysqli连接到数据库时,都会得到以下错误:
(!)警告:mysqli_connect():(HY000 / 2002):在第20行的/var/www/html/Lib_SQL.php中没有这样的文件或目录
>
第20行:
$ res = $ GLOBALS [“ ___ mysqli_ston”] = mysqli_connect(“ localhost”,“ user”,“ pass”,NULL,0,'var / sockets / mysql.sock');
我已经在php.ini文件上设置了默认套接字:
mysql.default_socket => /var/mysql/mysql.sock
我还注意到,强制与数据库建立TCP / IP连接不会导致此警告,例如:
$res = $GLOBALS["___mysqli_ston"] = mysqli_connect("hostname.com", "user", "pass" , NULL, 0, 'var/sockets/mysql.sock');
那么我如何使用mysqli_connect通过本地unix套接字连接到我的数据库?有提示吗?
答案 0 :(得分:-1)
您做错了方法。
尝试下面的代码。将数据库凭据更改为您的
<?php
$dbhost = 'localhost';
$dbuser = 'db username here';
$dbpass = 'db -password here';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully';
mysqli_close($conn);
?>