有没有可能向PDO询问一个数据库连接是否仍然有效?
CREATE TABLE IF NOT EXISTS
这条语句是否实际创建了一个表格?我正在寻找类似的东西来检查INSERT IGNORE语句后的lastInsertID。如果您从PDO中没有得到lastInsertID的结果,那么就没有插入数据(因为已存在相同的键)。
虽然mysql文档对此的解释不是很清楚,但if not exists
从句将导致mysql在表存在时发出警告。不幸的是,PDO只会捕获mysql错误而不是警告,因此您需要在create table
之后执行一个show warnings
SQL语句并解析其结果以检查是否已经发生了任何警告:
$warnings = $pdoconn->query("SHOW WARNINGS")->fetchObject();
// example output of $warnings OR NULL
// stdClass Object
// (
// [Level] => Warning
// [Code] => 1050
// [Message] => Table '...' already exists
// )
create table
语句未引发其他错误,则最后一个create table
语句创建了该表。if not exists
子句然后只使用标准PDO异常处理来捕获MySQL错误(如果表存在)可能更简单。 if not exists
子句真正是为了长SQL脚本而设计的,这些脚本没有适当的错误处理。
else{}
中检查错误。这是我从中得到的信息:http://php.net/manual/en/pdo.error-handling.php。 - Funk Forty Niner