PHP MySQLI不会悄然死亡

时间:2014-04-11 17:49:33

标签: php mysql mysqli

此代码:

$this->mysqli_connection = mysqli_connect($this->db_host,$this->db_user,$this->db_pass,$this->db_name);

if (!mysqli_connect_errno()) {
    $this->database_created = TRUE;
}

我希望这段代码能够安静地通过一个错误,并检查没有错误。但是,它仍然会输出错误。

如果没有数据库,我需要的是能够创建一个。在这里,我只是持有一个属性,如果数据库存在与否,可以很容易地检查它。

这是正确的吗?这样做的方式?

3 个答案:

答案 0 :(得分:1)

如果您不知道数据库是否存在,则应该连接而不指定数据库名称。

$this->mysqli = new mysqli($this->db_host,$this->db_user, $this->db_pass);

然后你可以运行查询“SHOW DATABASES LIKE'{$ this-> db_name}'”,否则只需继续创建数据库(如果它不存在)。

$ok = $this->mysqli->query("CREATE DATABASE IF NOT EXISTS {$this->db_name}");

然后,无论您是创建新数据库还是已存在,您仍然必须将该数据库作为默认数据库:

$ok = $this->mysqli->query("USE {$this->db_name}");

我同意你不会为生产网站做这个不必要的开销的评论。您应该在PHP脚本运行之前创建数据库,并且不要在每个请求上测试数据库是否存在。但我理解你的陈述,这只是为了练习。

答案 1 :(得分:0)

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$this->mysqli = mysqli_connect($this->db_host,$this->db_user, $this->db_pass);

$res = $this->mysqli->query("SHOW TABLES LIKE '$this->db_name'");
if ($res->fetch_row())
{
    $this->mysqli->select_db($this->db_name);
} else {

}

答案 2 :(得分:-1)

    $con = mysqli_connect('localhost', 'root', '');

    $q = mysqli_query($con, 'SHOW DATABASES');

    $dbName = 'dbname';
    $dbExists = false;

    while ($row = mysqli_fetch_assoc($q)){
        if($row['Database'] == $dbName){
            $dbExists = true;
            break;
        }
    }