Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过PHP连接到MySQL,MySQL可以工作,但不使用mysqli或PDO_Php_Mysql_Pdo_Mysqli - Fatal编程技术网

无法通过PHP连接到MySQL,MySQL可以工作,但不使用mysqli或PDO

无法通过PHP连接到MySQL,MySQL可以工作,但不使用mysqli或PDO,php,mysql,pdo,mysqli,Php,Mysql,Pdo,Mysqli,在我的connect脚本中,这是可行的,但将被弃用 $dbLink = mysql_connect($dbHostname, $dbUsername, $dbPassword) or die("Unable to connect to MySQL"); $dbselected = mysql_select_db($dbDatabase,$dbLink) or die("Could not select database"); 如果我将其更改为使用PDO或mysqli,它将失败 “未选择任何数据

在我的connect脚本中,这是可行的,但将被弃用

$dbLink = mysql_connect($dbHostname, $dbUsername, $dbPassword) or die("Unable to connect to MySQL");
$dbselected = mysql_select_db($dbDatabase,$dbLink) or die("Could not select database");
如果我将其更改为使用PDO或mysqli,它将失败

“未选择任何数据库”

在我的测试pc上,或

用户“xxxxxx”@“localhost”的访问被拒绝(使用密码:否)

在我的现场网站上

 $dbLink = mysqli_connect($dbHostname, $dbUsername, $dbPassword, $dbDatabase);
使用
ini\u get(“mysqli.default\u port”)…
阅读并测试了类似的问题,新命令连接正常,但没有完成任何操作

我的PDO代码是

$dbLink = new PDO('mysql:host=localhost;dbname=mass', $dbUsername, $dbPassword);

我认为您的主要问题是依赖
或die()
来处理错误条件。这不起作用,因为
PDO
mysqli
构造函数都不会返回假值

相反,您应该使用适当级别的错误处理

开发环境 在开发时,请始终在
php.ini
文件中使用以下属性

display_errors = On
error_reporting = E_ALL
更改此文件后,可能需要重新启动web服务器(如果正在使用)

mysqli 检查连接错误状态的
connect\u errno
属性

$mysqli = new mysqli('localhost', 'username', 'password', 'dbname');
if ($mysqli->connect_errno) {
    throw new Exception($mysqli->connect_error, $mysqli->connect_errno);
}
$mysqli->set_charset('utf8');
PDO 如果无法连接,
PDO
构造函数应该抛出异常。将错误模式设置为异常意味着任何进一步的错误也将引发异常

$pdo = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'username', 'password', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);

我不会在开发过程中使用任何
try{…}catch
语句,至少在这个初始阶段不会,因为您可能最终隐藏了任何严重错误。

这是说
使用密码:NO
。这意味着
$dbPassword
为空。显示您的pdo连接代码。显示您的pdo或mysqli连接string@asprinmysqli示例已经是问题的一部分。我认为巴尔马击中了要害;密码是empty@Phil啊,对了……错把它当成mysql了……我使用了你们的PDO示例,其中的值是硬编码的。我得到的只是一个空白屏幕。这告诉我这种联系似乎起作用了,以下代码不兼容?@PeterBrooks您是否按照我文章顶部所述设置了错误报告?我的内部PC上出现了完整的错误报告。我刚刚在线检查了错误日志文件,发现与PDO相关的错误:PHP致命错误:在/home/中找不到类“PDO”。。测试mysqli\uuphp时也会出现此错误警告:mysqli\u select\u db()预期参数1为mysqli,字符串在/home.中给出。。PHP版本:5.5.10第一个版本表示您尚未启用PDO扩展。第二个完全没有必要,因为在我的示例中,数据库名称已经包含在mysqli构造函数中