PHP
スクリプトを作成しました。これにより、接続されているデータベースで事前定義されたテーブルがチェックされ、そこにテーブルがない場合、スクリプトによってそれらのテーブルが作成されます。スイッチケースの実行が成功したことを確認してください
私はswitch ... case
を使用して、このエラーが発生していないテーブルを作成しました。
私がしたいことは、switch ... case
がエラーなしで終了したかどうかを確認することです。エラーがなければ、毎日実行されるいくつかのタスクを作成する別のセットまたはsql
ステートメントを起動します。上記のコードが出て、私はタスクを作成しますSQL
文の下に実行したいすべてのエラーを実行した後
これが今の私のテーブルのチェックおよび作成PHP
一部、
<?php
//This is the array that contains all the table names
$tableNames = array(
'catdb', 'clientdb', 'qcerrors', 'searchterm', 'teams', 'tempdb', 'userlogin', 'userroles', 'usertimetrack'
);
//I'm using this for loop to loop through the array and create the tables
//if they doesn't exists.
for ($i = 0; $i < count($tableNames); $i++) {
$tableCheck = $dbConnect->query("SHOW TABLES LIKE '" . $tableNames[$i] . "'");
if ($tableCheck->rowCount() > 0) {
echo $tableNames[$i] . " .... Exists <br />";
} else {
$tblName = $tableNames[$i];
switch ($tblName) {
case "catdb":
try {
$tblCreate = "CREATE TABLE IF NOT EXISTS `catdb` (
`catId` int(100) NOT NULL AUTO_INCREMENT,
`uId` int(100) NOT NULL,
`Catagory` varchar(100) NOT NULL,
`createDate` varchar(100) NOT NULL,
PRIMARY KEY (`catId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$dbConnect->exec($tblCreate);
echo $tblName . " .... Created OK <br />";
} catch (PDOException $e) {
echo $tblCreate . "<br>" . $e->getMessage();
}
break;
case "clientdb":
try {
$tblCreate = "CREATE TABLE IF NOT EXISTS `clientdb` (
`clientId` int(100) NOT NULL AUTO_INCREMENT,
`catId` varchar(100) NOT NULL,
`uId` int(100) NOT NULL,
`Client` varchar(100) NOT NULL,
`cDate` varchar(100) NOT NULL,
PRIMARY KEY (`clientId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$dbConnect->exec($tblCreate);
echo $tblName . " .... Created OK <br />";
} catch (PDOException $e) {
echo $tblCreate . "<br>" . $e->getMessage();
}
break;
case "qcerrors":
try {
$tblCreate = "CREATE TABLE IF NOT EXISTS `qcerrors` (
`qcId` int(100) NOT NULL AUTO_INCREMENT,
`qcError` varchar(100) NOT NULL,
`createdBy` varchar(100) DEFAULT NULL,
`createdOn` varchar(100) DEFAULT NULL,
PRIMARY KEY (`qcId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$dbConnect->exec($tblCreate);
echo $tblName . " .... Created OK <br />";
} catch (PDOException $e) {
echo $tblCreate . "<br>" . $e->getMessage();
}
break;
case "searchterm":
try {
$tblCreate = "CREATE TABLE IF NOT EXISTS `searchterm` (
`sId` int(100) NOT NULL AUTO_INCREMENT,
`sDate` varchar(100) NOT NULL,
`sUid` int(100) NOT NULL,
`searchedBy` int(100) NOT NULL,
PRIMARY KEY (`sId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$dbConnect->exec($tblCreate);
echo $tblName . " .... Created OK <br />";
} catch (PDOException $e) {
echo $tblCreate . "<br>" . $e->getMessage();
}
break;
case "teams":
try {
$tblCreate = "CREATE TABLE IF NOT EXISTS `teams` (
`tId` int(100) NOT NULL AUTO_INCREMENT,
`TeamName` varchar(100) NOT NULL,
`tlName` varchar(100) DEFAULT NULL,
`tlSet` varchar(100) NOT NULL,
PRIMARY KEY (`tId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$dbConnect->exec($tblCreate);
echo $tblName . " .... Created OK <br />";
} catch (PDOException $e) {
echo $tblCreate . "<br>" . $e->getMessage();
}
break;
case "tempdb":
try {
$tblCreate = "CREATE TABLE IF NOT EXISTS `tempdb` (
`tempId` int(100) NOT NULL AUTO_INCREMENT,
`uId` int(100) NOT NULL,
`tId` int(100) NOT NULL,
`catId` int(100) NOT NULL,
`clientId` int(100) NOT NULL,
`startTime` varchar(100) NOT NULL,
`Status` varchar(100) NOT NULL,
PRIMARY KEY (`tempId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$dbConnect->exec($tblCreate);
echo $tblName . " .... Created OK <br />";
} catch (PDOException $e) {
echo $tblCreate . "<br>" . $e->getMessage();
}
break;
case "userlogin":
try {
$tblCreate = "CREATE TABLE IF NOT EXISTS `userlogin` (
`uId` int(100) NOT NULL AUTO_INCREMENT,
`uCreateDate` varchar(100) NOT NULL,
`createdBy` int(100) NOT NULL,
`fName` varchar(100) NOT NULL,
`lName` varchar(100) NOT NULL,
`uName` varchar(100) NOT NULL,
`pWord` varchar(100) NOT NULL,
`uTeam` int(100) NOT NULL,
`uRole` varchar(100) NOT NULL,
PRIMARY KEY (`uId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$dbConnect->exec($tblCreate);
echo $tblName . " .... Created OK <br />";
} catch (PDOException $e) {
echo $tblCreate . "<br>" . $e->getMessage();
}
break;
case "userroles":
try {
$tblCreate = "CREATE TABLE IF NOT EXISTS `userroles` (
`urId` int(100) NOT NULL AUTO_INCREMENT,
`userRole` varchar(100) NOT NULL,
PRIMARY KEY (`urId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$dbConnect->exec($tblCreate);
echo $tblName . " .... Created OK <br />";
} catch (PDOException $e) {
echo $tblCreate . "<br>" . $e->getMessage();
}
break;
case "usertimetrack":
try {
$tblCreate = "CREATE TABLE IF NOT EXISTS `usertimetrack` (
`utId` int(100) NOT NULL AUTO_INCREMENT,
`jDate` varchar(100) NOT NULL,
`usrId` int(100) NOT NULL,
`Category` varchar(100) NOT NULL,
`utClient` varchar(100) NOT NULL,
`jType` varchar(100) NOT NULL,
`startTime` varchar(100) NOT NULL,
`endTime` varchar(100) NOT NULL,
`timeSpent` varchar(100) NOT NULL,
`Volume` int(100) NOT NULL,
`qcErrorId` varchar(100) NOT NULL,
`noOfProductLines` int(100) DEFAULT NULL,
`Remarks` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`utId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$dbConnect->exec($tblCreate);
echo $tblName . " .... Created OK <br />";
} catch (PDOException $e) {
echo $tblCreate . "<br>" . $e->getMessage();
}
break;
default:
echo $tblName . " this table is not part of this system.<br />";
}
}
}
?>
です。
<?php
$timeNow = date("Y-m-d H:i:s"); //To get the current time
//Set the event scheduler status from OFF to ON
$dbConnect->exec("SET GLOBAL event_scheduler = ON");
//Creates the daily task 1 to truncate searchterm table
$createTask1 = "CREATE DEFINER= '" . $dbUser . "'@`%` EVENT `searcTerm Table Clean` ON SCHEDULE EVERY 1 DAY STARTS '" . $timeNow . "' ON COMPLETION NOT PRESERVE ENABLE DO TRUNCATE TABLE searchterm";
$dbConnect->exec($createTask1);
//Creates the daily task 1 to truncate tempdb table
$createTask2 = "CREATE DEFINER= '" . $dbUser . "'@`%` EVENT `EmptyData` ON SCHEDULE EVERY 1 DAY STARTS '" . $timeNow . "' ON COMPLETION NOT PRESERVE ENABLE DO TRUNCATE TABLE tempdb";
$dbConnect->exec($createTask2);
?>
私はgoogleとsoを検索しましたが、私は質問をすることにしました。 switch ... case
が何らかの誤りで終わったかどうかを確認するために何をすればよいかを明らかにした場合、私は自分の問題をコミュニティに明確にしたことを願っています。あなたのコードで
MyISAM?本当に? – GordonM
あなたはもっと良いものを教えてくれますか?MySQLのデフォルトエンジンを使ってください。 – Sand
InnoDBはMySQLのデフォルトであり、何年も続いています。比較的最近のバージョンのMySQLを使用しています。また、ラテン語1は将来あなたに出くわすかもしれませんが、なぜUFT8MB4を使用しないのですか? – GordonM