重复的数据库名称不会回应其他条件

时间:2015-07-02 06:52:08

标签: php sql

这是我使用输入表单在SQL中创建数据库的代码。

<?php  
//Connect to SQL
$conn = new mysqli('127.0.0.1','root','');
if( $conn -> connect_error ){
    echo $conn -> connect_error;
    die('Connection unsuccessful');
}
echo 'Connection sucessful';

?>

<!-- ==================================================================== -->

<form action="" method="POST">
    <input type="text" name="db_name">
    <input type="submit" value="Create Database">
</form>

<?php
//Create Database
if( isset( $_POST["db_name"] ) && $DBNAME = $_POST["db_name"] )
    if( $conn -> query("CREATE DATABASE IF NOT EXISTS " . $DBNAME ) === TRUE )
        echo 'Database Created Sucessfully';
    else 
        echo 'Database ' . $DBNAME . ' already exists. Please try another name'; //This line won't execute
?>

如果输入重复的数据库名称,我想echo最后一行。我不知道为什么它没有执行。有什么帮助吗?

  

注意:输入重复的名称不会创建任何内容,页面只会显示“数据库已成功创建”

4 个答案:

答案 0 :(得分:0)

试试这个:

$query= $conn ->query("CREATE DATABASE " . $DBNAME );

if($query){
echo 'Database Created Sucessfully';
}
else{
echo 'Database ' . $DBNAME . ' already exists. Please try another name';
}

答案 1 :(得分:0)

您的SQL查询是:"CREATE DATABASE IF NOT EXISTS " . $DBNAME

对SQL引擎意味着什么:

  • 如果$DBNAME不存在,请创建它并告诉应用程序我们已完成!
  • 如果$DBNAME存在,请不要做任何事情并告诉我们我们已完成申请!

因为您的SQL始终成功执行,无论表是否存在,您都不会遇到else子句。

答案 2 :(得分:0)

如果条件不要尝试分配值。并使用它来检查数据库是否已经存在

<?php
    if( isset( $_POST["db_name"] )  )
        $DBNAME = $_POST["db_name"];
        if( $conn->query("CREATE DATABASE " . $DBNAME ) === TRUE )
             echo 'Database Created Successfully';
        else
            echo 'Database ' . $DBNAME . ' already exists. Please try another name'; //This line won't execute
    ?>

答案 3 :(得分:0)

<?php
//Create Database
if( isset( $_POST["db_name"] ) && $DBNAME = $_POST["db_name"] )
    if( $conn -> query("CREATE DATABASE " . $DBNAME ) === TRUE )
         echo 'Database Created Sucessfully';
    else
        echo 'Database ' . $DBNAME . ' already exists. Please try another name'; //This line won't execute
?>

这应该这样做,好像你正在使用“IF NOT EXISTS”一样,你的查询将永远成功,但是如果你试图创建一个名称已经存在的数据库,那么查询将会失败,并且不会返回TRUE