当我尝试从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
是我的数据库名称。
答案 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 statements或PDO 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}";
希望它能解决问题。