Tôi có đoạn mã sau:CREATE TABLE IF NOT EXISTS không thành công với bảng đã tồn tại
$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;
}
Những kết quả đầu ra ...
Table creation failed: (1050) Table '
dsl_ams .
NGƯỜI DÙNG ' already exists
Những gì tôi không hiểu là: không phải là IF NOT EXISTS
phải hủy bỏ việc thực hiện truy vấn SQL nếu bảng đó đã tồn tại chưa? Nói cách khác, nếu bảng tồn tại, nó có nên thoát khỏi câu lệnh if và không echo bất cứ điều gì, và không cố gắng thực hiện truy vấn?
Chỉ cố gắng tìm cách tốt nhất để "tạo bảng nếu nó không tồn tại" mà không cần xuất bất kỳ thứ gì cho người dùng.
'$ queryCreateUsersTable! = $ QueryCreateTable', tôi cho phép thông báo thấy loại lỗi đó. – Wrikken
"bật thông báo"? Ý anh là gì? và yeah, tổng số derp về phía tôi. –
Thiết lập error_reporting đến mức chính xác ('error_reporting (E_ALL | E_STRICT);' là những gì tôi muốn sử dụng trong quá trình phát triển) & 'ini_set ('display_errors', 1);' trên môi trường phát triển của bạn, 'ini_set ('log_errors', 1); 'trên hộp sản xuất của bạn (không cần hiển thị lỗi cho người dùng cuối) – Wrikken