我正在使用PHP和mysqli,并尝试创建数据库(如果dbLogin文件中不存在该数据库)。似乎应该做的很简单。似乎在第一次创建尝试时就挂了一个错误,并且不会越过或抓住错误。
这是我非常简单的代码:
<?php
$con = '';
try {
$con = new mysqli("host", "user", "pass", "db");
}
catch(Exception $e) {
echo "Error: $e<br />";
$con = new mysqli("host", "user", "pass");
$con->query("CREATE DATABASE IF NOT EXISTS db;");
}
/* check connection */
if ($con->connect_errno) {
printf("Connect failed: %s\n", $con->connect_error);
exit();
}
?>
现在,当我运行上面的代码时,我得到的只是以下错误:
警告:mysqli :: __ construct():(HY000 / 1049):未知数据库 第6行的xyz \ DBLogin.php中的'db' 失败:未知数据库'db'
第6行是try
块内的行。它不会创建数据库,也不会越过错误。
答案 0 :(得分:2)
您的问题是mysqli::__construct
仅在无法连接到数据库时才生成警告,并且您不能直接捕获警告。现在您可以解决该问题(例如,参见this question),但是执行以下操作可能更简单:
$con = new mysqli("host", "user", "pass");
if ($con->connect_errno) {
printf("Connect failed: %s\n", $con->connect_error);
exit();
}
if (!$con->select_db('db')) {
echo "Couldn't select database: " . $con->error;
if (!$con->query("CREATE DATABASE IF NOT EXISTS db;")) {
echo "Couldn't create database: " . $con->error;
}
$con->select_db('db');
}