验证MySQL表创建 - PDO

时间:2013-02-10 22:46:52

标签: php mysql pdo

所以我是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值,但是在这种情况下,表是否已经存在并不总是真的吗?

2 个答案:

答案 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]);
}