我正在使用以下很棒的、簡單的、輕量級的資料庫類:https : //codeshack.io/super-fast-php-mysql-database-class/
我的問題是我不知道如何確定表中是否有資料庫存在與否。我有以下 PHP 代碼:
function addSts($database, $brow, $vers, $pag, $lang) {
$tablename = "sts" . $pag;
$stsinsert = $database->query('INSERT INTO ' . $tablename . '(id, browser, version, language, date) VALUES (NULL, ?, ?, ?, current_timestamp())', $brow, $vers, $lang);
if ($stsinsert->affectedRows()) {
echo "TABLE EXISTS";
$database->close();
}
else {
echo "TABLE DOES NOT EXISTS -> CREATE TABLE";
$pagecreation = $database->query('CREATE TABLE ' . $tablename . ' (`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `browser` VARCHAR(20) NOT NULL, `version` VARCHAR(10) NOT NULL, `language` VARCHAR(5) NOT NULL, `date` TIMESTAMP NOT NULL DEFAULT CURRENT_DATE(), PRIMARY KEY (`id`))');
if ($pagecreation) {
addSts($brow, $vers, $pag, $lang);
}
}
}
它總是拋出以下錯誤:Unable to prepare MySQL statement (check your syntax) - Table 'testdb.ststest' doesn't exist
所以,這里有沙拉。它會拋出錯誤并且不會進一步進入 if-else 部分。所以每次表不存在時,程式就會停止作業。
希望有人可以幫助我。
提前致謝。
uj5u.com熱心網友回復:
如果可以,請使用 information_schema DB 并查詢 TABLES 表
select * from tables where TABLE_SCHEMA like '<database name>'
e.g. select * from tables where TABLE_SCHEMA like 'mydbdev'
簡單地遍歷結果或
select * from tables where TABLE_SCHEMA like '<database name>' AND TABLE_NAME like '<table name>';
并計算行數(如果不存在則應為 0,如果存在則應為 1)。
uj5u.com熱心網友回復:
正如評論中提到的@Barmar,您可以使用try/catch陳述句來執行此操作。
function addSts($database, $brow, $vers, $pag, $lang) {
$tablename = "sts" . $pag;
try {
// try to insert first
$stsinsert = $database->query('INSERT INTO ' . $tablename . '(id, browser, version, language, date) VALUES (NULL, ?, ?, ?, current_timestamp())', $brow, $vers, $lang);
if ($stsinsert->affectedRows()) {
echo "TABLE EXISTS";
$database->close();
}
}
catch (\Exception $e){
echo "TABLE DOES NOT EXISTS -> CREATE TABLE";
$pagecreation = $database->query('CREATE TABLE ' . $tablename . ' (`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `browser` VARCHAR(20) NOT NULL, `version` VARCHAR(10) NOT NULL, `language` VARCHAR(5) NOT NULL, `date` TIMESTAMP NOT NULL DEFAULT CURRENT_DATE(), PRIMARY KEY (`id`))');
if ($pagecreation) {
// call the function to insert data
addSts($brow, $vers, $pag, $lang);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/383186.html
