我尝试登录后应用程序崩溃

时间:2014-08-28 08:09:19

标签: php mysql database login

我尝试登录我的应用程序,这是我得到的错误:

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();
    }

}

?>

2 个答案:

答案 0 :(得分:1)

几个问题:

  1. 摆脱 mysql _ * 函数,不推荐使用它们,不再维护它们,使用mysqli或PDO扩展
  2. 您使用常量作为字符串,因此mysql_connect无法连接到任何名为DB_HOST的服务器
  3. 您没有导入config.php文件,因此db_connect.php不了解常量
  4. 所以,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;
}