Php 如何检查mysql数据库是否存在?
如果不存在CREATEDATABASE或新的PDO(“mysql:host=localhost;db=dbname”…,则不能使用CREATEDATABASE 应该这样做。如果没有,首先通过Php 如何检查mysql数据库是否存在?,php,mysql,Php,Mysql,如果不存在CREATEDATABASE或新的PDO(“mysql:host=localhost;db=dbname”…,则不能使用CREATEDATABASE 应该这样做。如果没有,首先通过 CREATE DATABASE IF NOT EXISTS 它将返回数据库名称本身,因此您可以检查查询的计数是否>0,结果是否为!=0…等等 查询的问题是反勾号的使用错误,您需要使用单引号,而不是反勾号 '如果@robin的答案中有一个打字错误,我认为条件应该是如果(!empty($result))带有感
CREATE DATABASE IF NOT EXISTS
它将返回数据库名称本身,因此您可以检查查询的计数是否>0,结果是否为!=0…等等
查询的问题是反勾号的使用错误,您需要使用单引号,而不是反勾号
'如果@robin的答案中有一个打字错误,我认为条件应该是
如果(!empty($result))
带有感叹号。它不存在,因为数据库存在时$result不是空的。因此使用此$result=$pdo\u mysql->查询(“像这样显示数据库”).DB_NAME。“”);如果(!empty($result)){print“exists”}否则{print“no exists”}
应该可以工作。我希望这对您有所帮助:
PDO::query()
返回PDOStatement对象,或在失败时返回FALSE
您的查询是有效的,永远不会失败(忽略可能的低级问题)
$result
将始终计算为TRUE
-ish,因此流将始终进入if($result)
块
(if(empty($result))
毫无意义)
您需要检查查询是否返回(零结果不是错误)
: 如果关联的PDO语句执行的最后一条SQL语句是SELECT语句,则某些数据库可能会返回该语句返回的行数。但是,对于所有数据库来说,这一行为并不保证,对于可移植应用程序来说也不应依赖 更安全的做法是:
我更改了括号,但我总是得到“不存在”$result=$pdo_mysql->query(“显示像''.DB_NAME.''')这样的数据库);if(empty($result)){print“exists”;}else{print“no exists”;}不工作。总是“no exists”你的代码应该可以工作,我也可以。你确定你正在连接的用户可以访问数据库吗?你确定数据库名称拼写正确吗?数据库名称中没有特殊字符?
var\u dump()
确保所有变量都可以。我想为什么不工作。问题在括号中。我必须编写一个查询(“创建数据库”).DB_NAME.“`”)(写作时带“`”)和“?@ales请注意我最后的编辑。
CREATE DATABASE IF NOT EXISTS
SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'dbname'
if ($result->fetch() === FALSE) {
// result set is empty
}