错误:未选择数据库

时间:2014-08-16 18:51:08

标签: php mysql

当我尝试从mysql数据库中检索数据时,它给出了一个错误“没有选择数据库”这是查询:

$safe_brand_drug_name = strtoupper($drug_name);
$query = "SELECT * FROM brand_drug where brand_drug_name = {$safe_brand_drug_name}";
$result = mysql_query($query);
echo "<h1>User result</h1>";

if($result === FALSE) {
    die(mysql_error()); // TODO: better error handling
}
while($row = mysqli_fetch_array($result))
{
    echo $row['brand_drug_name'] ." - " .$row["manufacturers"] . " - " . $row["type"] . " - " . $row["price"];
    echo "<br>";
}

这是我的数据库连接:

define("DB_SERVER", 'localhost');
define("DB_USER", 'root');
define("DB_PASS", '1234');
define("DB_NAME", 'brand_generic');

brand_generic是我的数据库名称。

2 个答案:

答案 0 :(得分:1)

您的代码无法正确执行的问题是,您使用mysql_query($query) mysql_error()mysqli_fetch_array()混合使用MySQL API

他们混合在一起,是mysql_mysqli_函数。

使用:

时,将其更改为mysqli_query($con,$query)(首先传递数据库连接变量,然后传递查询)

or die(mysqli_error($con))代替mysql_error()

$DB_SERVER = "localhost";
$DB_USER = "root";
$DB_PASS = "1234";
$DB_NAME = "brand_generic";

与:

结合使用
$con = new mysqli($DB_SERVER, $DB_USER, $DB_PASS, $DB_NAME);
if($con->connect_errno > 0) {
  die('Connection failed [' . $con->connect_error . ']');
}

,因为您使用define将其定义为常量:

define("DB_SERVER", 'localhost');
define("DB_USER", 'root');
define("DB_PASS", '1234');
define("DB_NAME", 'brand_generic');

$con = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
if($con->connect_errno > 0) {
  die('Connection failed [' . $con->connect_error . ']');
}

由于没有变量将它们全部拼接在一起,如上所示$con = ...,因此MySQL / PHP不知道在连接代码中要取的内容。单独的常量没有将整个赋值给变量,无法区分它的用途。

此外,请确保代码的其余部分中没有mysql_的其他实例,如果有的话。

在打开<?php标记后立即将error reporting添加到文件顶部。

error_reporting(E_ALL);
ini_set('display_errors', 1);

以及or die(mysqli_error($con))mysqli_query(),它会发出任何错误信号。


<强> 旁注:

您目前的代码向SQL injection开放。

使用mysqli_ prepared statementsPDO with prepared statements - 更安全。

答案 1 :(得分:-1)

尝试使用数据库&#34; brand_generic&#34;在Query中以下列方式:

$query = "SELECT * FROM brand_generic.brand_drug where brand_drug_name = {$safe_brand_drug_name}";

希望它能解决问题。