2

次のコードがあります。

$db_host = 'localhost';
$db_port = '3306';
$db_username = 'root';
$db_password = 'root';
$db_primaryDatabase = 'dsl_ams';

// Connect to the database, using the predefined database variables in /assets/repository/mysql.php
$dbConnection = new mysqli($db_host, $db_username, $db_password, $db_primaryDatabase);

// If there are errors (if the no# of errors is > 1), print out the error and cancel loading the page via exit();
if (mysqli_connect_errno()) {
    printf("Could not connect to MySQL databse: %s\n", mysqli_connect_error());
    exit();
}

$queryCreateUsersTable = "CREATE TABLE IF NOT EXISTS `USERS` (
    `ID` int(11) unsigned NOT NULL auto_increment,
    `EMAIL` varchar(255) NOT NULL default '',
    `PASSWORD` varchar(255) NOT NULL default '',
    `PERMISSION_LEVEL` tinyint(1) unsigned NOT NULL default '1',
    `APPLICATION_COMPLETED` boolean NOT NULL default '0',
    `APPLICATION_IN_PROGRESS` boolean NOT NULL default '0',
    PRIMARY KEY  (`ID`)
)";

if(!$dbConnection->query($queryCreateUsersTable)){
    echo "Table creation failed: (" . $dbConnection->errno . ") " . $dbConnection->error;
}

どの出力...

Table creation failed: (1050) Table '`dsl_ams`.`USERS`' already exists

私が理解できないのはIF NOT EXISTS、そのテーブルが既に存在する場合、SQL クエリの実行をキャンセルすることは想定されていないということです。つまり、テーブルが存在する場合、その if ステートメントを終了し、何もエコーアウトせず、クエリを実行しようとしないでください。

ユーザーに何も出力せずに「存在しない場合はテーブルを作成する」ための最良の方法を見つけようとしています。

4

2 に答える 2

1

エラーではなく、警告が表示されるはずです。どのバージョンを実行していますか? エラーを表示したい場合は、SQL クエリの前に次のように入力します。 SET sql_notes = 0; 次に、SET sql notes=1; と入力します。クエリの後。

于 2013-05-15T00:22:35.387 に答える
0
I use your script in mysql is true:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.5.30    |
+-----------+
1 row in set (0.01 sec)

$queryCreateUsersTable = "CREATE TABLE IF NOT EXISTS `sun_channel` (
    `ID` int(11) unsigned NOT NULL auto_increment,
    `EMAIL` varchar(255) NOT NULL default '',
    `PASSWORD` varchar(255) NOT NULL default '',
    `PERMISSION_LEVEL` tinyint(1) unsigned NOT NULL default '1',
    `APPLICATION_COMPLETED` boolean NOT NULL default '0',
    `APPLICATION_IN_PROGRESS` boolean NOT NULL default '0',
    PRIMARY KEY  (`ID`)
)";
$res = mysql_query($queryCreateUsersTable);
var_dump($res);
die;

//show bool(true)
于 2013-05-15T01:36:28.870 に答える