$pdo_mysql = new PDO("mysql:host=localhost", "ales", "alespass");
$result = $pdo_mysql->query("SHOW DATABASES LIKE `dbname`");
if ($result) { //not work.
print "no";
} else {
print "yes";
}
你不能使用CREATE DATABASE IF NOT EXISTS或新的PDO(“mysql:host = localhost; db = dbname”......
答案 0 :(得分:1)
你对@robin的答案的评论中有错字错误,我认为条件应为if (!empty($result))
带有感叹号。打印不存在,因为当数据库存在时$ result不为空。因此,使用此$result = $pdo_mysql->query("SHOW DATABASES LIKE '" . DB_NAME . "'"); if (!empty($result)) { print "exists"; } else { print "no exists"; }
应该有效。我希望有帮助
答案 1 :(得分:0)
CREATE DATABASE IF NOT EXISTS
应该做的伎俩。如果没有,请先通过
检查是否存在SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'dbname'
它将返回数据库名称本身,因此您可以检查查询的计数是否为> 0,结果是!= 0 ......依此类推。但是你喜欢。
您的查询问题是反引号的使用错误,您需要使用单引号,而不是反引号。
<强>&#39;而不是“
答案 2 :(得分:0)
PDO::query()
会返回PDOStatement对象,或者FALSE
会失败。
您的查询有效且永远不会失败(忽略可能的较低级别问题)。
$result
将始终评估为TRUE
- ish,因此流程将始终进入if ($result)
块。
(if (empty($result))
几乎没有意义)
您需要检查查询是否返回zero row(零结果不错误)。
如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,对于所有数据库,无法保证此行为,并且不应依赖于便携式应用程序。
if ($result->fetch() === FALSE) {
// result set is empty
}