1

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

4

2 回答 2

4

不,这正是IF NOT EXISTS它的用途——如果表已经存在,则什么也不做,而不会触发错误。

解决方案显然太明显了:只需省略IF NOT EXISTS. 如果表确实存在,则该语句将触发您可以捕获的异常(取决于配置)。

于 2013-02-10T22:54:54.477 回答
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]);
}
于 2013-02-11T10:07:04.973 回答