我尝试登录我的应用程序,这是我得到的错误:
08-28 07:57:31.450: E/JSON(1047): <br />n<b>Warning</b>: mysql_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known.
in <b>C:\xampp\htdocs\API\include\DB_connect.php</b> on line <b>19</b><br />n<br />n<b>Warning</b>: mysql_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known.
in <b>C:\xampp\htdocs\API\include\DB_connect.php</b> on line <b>19</b><br />nNo database selectedn
08-28 07:57:31.450: E/JSON Parser(1047): Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject
看起来它没有成功连接到数据库,但我不明白为什么。
此外,这是我的index.php
文件,位于xampp/htdocs/api
:
<?php
if (isset($_POST['tag']) && $_POST['tag'] != '') {
// get tag
$tag = $_POST['tag'];
// include db handler
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// response Array
$response = array("tag" => $tag, "success" => 0, "error" => 0);
// check for tag type
if ($tag == 'login') {
// Request type is check Login
$email = $_POST['email'];
$password = $_POST['password'];
// check for user
$user = $db->getUserByEmailAndPassword($email, $password);
if ($user != false) {
// user found
// echo json with success = 1
$response["success"] = 1;
$response["uid"] = $user["unique_id"];
$response["user"]["name"] = $user["name"];
$response["user"]["email"] = $user["email"];
$response["user"]["created_at"] = $user["created_at"];
$response["user"]["updated_at"] = $user["updated_at"];
echo json_encode($response);
} else {
// user not found
// echo json with error = 1
$response["error"] = 1;
$response["error_msg"] = "Incorrect email or password!";
echo json_encode($response);
}
} else if ($tag == 'register') {
// Request type is Register new user
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
// check if user is already existed
if ($db->isUserExisted($email)) {
// user is already existed - error response
$response["error"] = 2;
$response["error_msg"] = "User already existed";
echo json_encode($response);
} else {
// store user
$user = $db->storeUser($name, $email, $password);
if ($user) {
// user stored successfully
$response["success"] = 1;
$response["uid"] = $user["unique_id"];
$response["user"]["name"] = $user["name"];
$response["user"]["email"] = $user["email"];
$response["user"]["created_at"] = $user["created_at"];
$response["user"]["updated_at"] = $user["updated_at"];
echo json_encode($response);
} else {
// user failed to store
$response["error"] = 1;
$response["error_msg"] = "Error occured in Registartion";
echo json_encode($response);
}
}
} else {
echo "Invalid Request";
}
} else {
echo "Access Denied";
}
?>
这是config.php
文件:
<?php
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASSWORD", "");
define("DB_DATABASE", "dbapp");
?>
db_connect.php
文件:
<?php
class DB_Connect {
// constructor
function __construct() {
}
// destructor
function __destruct() {
// $this->close();
}
// Connecting to database
public function connect() {
require_once 'config.php';
// connecting to mysql
$con = mysql_connect('DB_HOST', 'DB_USER', 'DB_PASSWORD');
// selecting database
mysql_select_db('DB_DATABASE');
// return database handler
return $con;
}
// Closing database connection
public function close() {
mysql_close();
}
}
?>
答案 0 :(得分:1)
几个问题:
DB_HOST
的服务器config.php
文件,因此db_connect.php
不了解常量所以,db_connect.php将是这样的(我将使用 * mysql _ 函数,但你应该至少使用mysqli函数,我可以在需要时使用PDO重写你的类)
<?php
require('config.php); // <--- Added require
class DB_Connect {
// constructor
function __construct() {
}
// destructor
function __destruct() {
// $this->close();
}
// Connecting to database
public function connect() {
require_once 'config.php';
// connecting to mysql
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); //<---- REMOVED '
// selecting database
mysql_select_db(DB_DATABASE);
// return database handler
return $con;
}
// Closing database connection
public function close() {
mysql_close();
}
}
?>
答案 1 :(得分:0)
我找到了原因,在DB_connect文件中我应该直接插入参数,而不是从config.php文件中获取它
首先是:
public function connect() {
require_once 'config.php';
// connecting to mysql
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
// selecting database
mysql_select_db(DB_DATABASE);
// return database handler
return $con;
}
它应该是:
public function connect() {
require_once 'config.php';
// connecting to mysql
$con = mysql_connect('127.0.0.1', 'root', '');
// selecting database
mysql_select_db('dbapp');
// return database handler
return $con;
}