所以我是PDO的新手,只是试图了解它。我有以下代码:
$sql = $conn->prepare('
CREATE TABLE IF NOT EXISTS `users` (
`UserID` INT(25) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Username` VARCHAR(65) NOT NULL ,
`Password` VARCHAR(32) NOT NULL ,
`EmailAddress` VARCHAR(255) NOT NULL,
`Name` VARCHAR(50) NOT NULL ) ');
$sql->execute();
有没有办法知道表是成功创建还是已经存在,所以没有执行?
我知道您可以检查 - > execute()是否为true或false值,但是在这种情况下,表是否已经存在并不总是真的吗?
答案 0 :(得分:4)
没有。这正是IF NOT EXISTS
的用途 - 如果表已经存在则不执行任何操作,而不会触发错误。
解决方案显然太明显了:只需忽略IF NOT EXISTS
。如果该表存在,该语句将触发您可以捕获的异常(取决于配置)。
答案 1 :(得分:0)
解决了这个问题:
try {
$sql = $conn->prepare('
CREATE TABLE `users` (
`UserID` INT(25) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Username` VARCHAR(65) NOT NULL ,
`Password` VARCHAR(32) NOT NULL ,
`EmailAddress` VARCHAR(255) NOT NULL,
`Name` VARCHAR(50) NOT NULL,
`Rank` INT(1) NOT NULL DEFAULT 0 )
');
$sql->execute();
echo "Table 'users' added to the database";
} catch(PDOException $ex) {
$errors = $sql->errorInfo();
echo($errors[2]);
}