验证MySQL表创建-PDO


Verify MySQL Table Creation - 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值,但在这种情况下,无论表是否已经存在,它都不是真的吗?

否。这正是IF NOT EXISTS的作用——如果表已经存在,则不执行任何操作,而不会触发错误。

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

解决了这个问题:

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