Php 检查数据库是否存在
下面的代码工作正常,只是在连接到不存在的数据库时抛出警告。这在关闭错误的产品中很好,但如果不需要,我宁愿没有错误Php 检查数据库是否存在,php,mysql,Php,Mysql,下面的代码工作正常,只是在连接到不存在的数据库时抛出警告。这在关闭错误的产品中很好,但如果不需要,我宁愿没有错误 function cpanel_db_connect($dbname) { // normalize $dbname = convert_to_slug($dbname); $dbname = CPANEL_USER . '_' . $dbname; $dbuser = CPANEL_USER . '_' . CPANEL_DB_USER;
function cpanel_db_connect($dbname) {
// normalize
$dbname = convert_to_slug($dbname);
$dbname = CPANEL_USER . '_' . $dbname;
$dbuser = CPANEL_USER . '_' . CPANEL_DB_USER;
// connnect database
$mysqli = new mysqli(CPANEL_DB_HOST, $dbuser, CPANEL_DB_PASS, $dbname);
if ($mysqli->connect_error) {
return false;
}
return $mysqli;
}
以上工作 在PHP中使用@sign来抑制警告/错误不是一个好的做法。您可能会意外地抑制无效的用户名或密码消息,您永远不会知道它 检查数据库是否存在的更合适的方法是创建Mysql或Mysqli的新实例(不指定默认数据库)并执行以下查询(类似于Marc B的注释):
从信息\u SCHEMA.SCHEMATA WHERE SCHEMATA.SCHEMA\u NAME='my\u database\u NAME'中选择COUNT(*)作为'exists'
然后,您可以检查键的值exists
,查看数据库是否存在
下面是一个示例代码:
//要执行的语句
$sql='从SCHEMATA.SCHEMATA WHERE SCHEMATA.SCHEMA_NAME=“my_database_NAME”信息中选择COUNT(*)作为'exists';
//执行该语句
$query=$mysqli->query($sql);
//提取值
$row=$query->fetch_object();
$dbExists=(bool)$row->exists;
它稍微长一点,但更安全。这样做有效,只需在以下代码中替换$dbname即可:
if (empty (mysql_fetch_array(mysql_query("SHOW DATABASES LIKE '$dbname' ")))){
echo "DB does Not exist"; }else{ echo "DB exists!";}
更新到MYSQLI:
$conn = new mysqli('localhost', 'root', '');
$dbname='test';
if (empty (mysqli_fetch_array(mysqli_query($conn,"SHOW DATABASES LIKE '$dbname'"))))
{
echo "DB not exist<br>";
}
else
{
echo "DB exist<br>";
}
$conn=newmysqli('localhost','root','');
$dbname='test';
if(空(mysqli_fetch_数组(mysqli_查询($conn,“显示像“$dbname”这样的数据库)))
{
回声“DB不存在
”;
}
其他的
{
回声“DB存在
”;
}
您可以使用@
操作符简单地抑制错误,例如$mysqli=@newmysqli(CPANEL\u DB\u HOST、$dbuser、CPANEL\u DB\u PASS、$dbname)
由于您使用的是mysqli的OOP版本,只需在connect部分进行尝试/捕获。您会收到什么警告/错误?@Marc,mysqli
不会在connect上引发异常。您必须通过返回对象上的connect\u error
检查错误。您可能希望使用专用登录来调查这类问题,并直接查询信息模式数据库:从信息模式中选择模式名称。模式模式中的模式名称=“此处的数据库名称”
比尝试连接到(可能不存在)数据库并检查错误要好。
$conn = new mysqli('localhost', 'root', '');
$dbname='test';
if (empty (mysqli_fetch_array(mysqli_query($conn,"SHOW DATABASES LIKE '$dbname'"))))
{
echo "DB not exist<br>";
}
else
{
echo "DB exist<br>";
}