我有这段代码:
if(!mysql_connect($host,$user,$passwd)){ die("Hoops, error! ".mysql_error()); }
......这里没有错误。
if(!mysql_select_db($db,$connect)){
$create_db = "CREATE DATABASE {$db}";
mysql_query($create_db,$connect);
mysql_query("USE DATABASE {$db}",$connect);
}
...“没有数据库选择”错误来自此处。 我想选择数据库是否存在,如果不存在则创建并选择它。
为什么我的代码不正确?
提前谢谢
答案 0 :(得分:3)
你在哪里保存mysql_connect()返回的值?别在这里看到它。我假设$ host,$ user,$ password和$ db提前正确设置。但是你将一个参数传递给可能没有正确设置的mysql_select_db。
$connect = mysql_connect($host,$user,$passwd);
if (!$connect) {
die('Could not connect: ' . mysql_error());
}
if(!mysql_select_db($db,$connect)) ...
首先检查您是否可以先选择而不使用 CREATE查询。尝试一个简单的SELECT查询来启动。如果可以连接,请选择db,然后执行SELECT查询,这是一步。 然后尝试CREATE查询。如果这不起作用,那几乎肯定是权限问题。
答案 1 :(得分:1)
您可能需要为尝试创建数据库的用户创建数据库创建权限。 然后,您需要操作有效的连接资源。 $ connect永远不会被分配给连接资源。
答案 2 :(得分:1)
为什么不简单地使用 CREATE DATABASE IF NOT EXISTS 语法呢?
像这样......
$con = mysql_connect('localhost');
$sql = 'CREATE DATABASE IF NOT EXISTS {$db}';
if (mysql_query($sql, $con)) {
print("success.\n");
} else {
print("Database {$db} creation failed.\n");
}
if(!mysql_select_db($db,$connect)){
print("Database selection failed.\n");
}
答案 3 :(得分:0)
你应该检查mysql_query()的返回值 - 目前如果这些调用中的任何一个失败你都不会知道它:
if(!mysql_select_db($db,$connect)){
if (!mysql_query("CREATE DATABASE $db", $connect)) {
die(mysql_error());
}
if (!mysql_select_db($db, $connect)) {
die(mysql_error());
}
}
答案 4 :(得分:0)
更改行
mysql_query($create_db,$connect);
mysql_query("USE DATABASE {$db}",$connect);
要
mysql_query($create_db,$connect);
mysql_select_db($db);*
它应该有效。
答案 5 :(得分:0)
你可以试试w3schools网站。他们有一个非常简单易学的教程来选择数据库。链接是:http://www.w3schools.com/php/php_mysql_select.asp 希望这有帮助:)
答案 6 :(得分:0)
我要感谢你们所有人,但我发现自己有错。这个脚本在类中,其中一个变量没有在这个类中定义。所以我真的很抱歉。 我不知道如何考虑正确的答案,但在阅读了克莱顿关于没有正确设置参数的答案之后我注意到了我的错误,所以我猜他是赢家;)