检测/创建MySQL数据库

时间:2011-02-13 13:18:44

标签: php mysql

为什么此代码无法识别现有数据库?

$result = mysql_query("SHOW DATABASES LIKE $database", $conn);
echo $result."       aaaaaaaaaaaaaaaaaaa<br>";
if ($result) 
{
    echo ("Datebase <font color='#FF0000'><b> $database </b></font> already exist.<br /><br />");
}
else
{
    mysql_query("create database IF NOT EXISTS $database CHARACTER SET utf8 COLLATE utf8_general_ci");
    echo ("Datebase <font color='#FF0000'><b> $database </b></font> is succesfully created.<br /><br />");
}

4 个答案:

答案 0 :(得分:1)

您忘记了引号(在SQL中使用字符串时始终是必需的):

$result = mysql_query("SHOW DATABASES LIKE '$database'", $conn);

答案 1 :(得分:1)

此代码让我的某些人感到恶心......

这是一个很好的代码:

<?php

$query = "SHOW DATABASES LIKE ". $database;
$mysqlquery = mysql_query($query);
if($mysqlquery){
    echo '<b>Database already exist.<br>';
}
else
{
    $createquery = "CREATE DATABASE IF NOT EXISTS ". $database ." CHARACTER SET utf8 COLLATE utf8_general_ci";
    $mysqlcreatequery = mysql_query($createquery);
    if($mysqlcreatequery){
        echo 'Database '. $database .' created. ';
    }
    else
    {
        echo 'Database is not created!';
    }
}
?>

答案 2 :(得分:0)

由于模式是一个字符串,你必须引用它:

"SHOW DATABASES LIKE '$database'"

答案 3 :(得分:0)

数据库是Dr.Molle所述的字符串。另外,要注意通配符。 _是单个字符通配符,因此当您查找数据库order_2010时,它也会匹配orders2010,这将导致假设order_2010确实存在数据库中。

小机会,但我想我应该提一下。 :)