首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个php文件中连接MySQL并在另一个php文件中使用它。

在一个php文件中连接MySQL并在另一个php文件中使用它。
EN

Stack Overflow用户
提问于 2014-09-04 14:47:06
回答 1查看 1.2K关注 0票数 0

我有一个config.php文件,比如

代码语言:javascript
复制
<?php
/**
 * Database config variables
 */
define("DB_HOST", "blabla");
define("DB_USER", "blabla");
define("DB_PASSWORD", "blabla");
define("DB_DATABASE", "blabla");

?>

并且我有一个connect.php文件,比如

代码语言:javascript
复制
<?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();
    }

} 
?>

并且我有一个functions.php文件,比如

代码语言:javascript
复制
      <?php

    class DB_Functions {

        private $db;
    //put your code here
    // constructor
        function __construct() {
            include_once 'connect.php';
        // connecting to database
            $this->db = new DB_Connect();
            $this->db->connect();
        }

    // destructor
        function __destruct() {

        }

    /**
     * Storing new user
     * returns user details
     */
    public function insertRecord($name, $email, $gcm_regid, $password) {


        // insert user into database
        $response = array();
        $query0 = "SELECT * FROM gcm_users WHERE name='$name'";
        $result0 = mysql_query($query0);


        if(mysql_fetch_array($result0) == NULL){

    //insert...
            // insert user into database
  $query = "INSERT INTO `gcm_users`(`id`, `gcm_regid`, `name`, `email`) VALUES (NULL,'$gcm_regid','$name','$email');";

  $result= mysql_query( $query);
        // check for successful store
        if ($result) {
            // get user details
      //      $result2 = mysql_query("SELECT * FROM gcm_users WHERE name = '$name'") or die(mysql_error());
            // return user details
      //      if (mysql_num_rows($result2) > 0) {
                $response["success"] = 1;
        $response["message"] = "record added";
    // echo no users JSON
        return $response;

    }else{
        $response["success"] = 0;
        $response["message"] = "No records added";
    // echo no users JSON
        return $response;
    }



}else{
        $response["success"] = 0;
        $response["message"] = "Record already exists";
    // echo no users JSON
        return $response;
    }

}
?>

我有一个简单的插入记录的函数,但它不起作用,我认为多文件连接系统在传输连接时出现错误,但我找不到为什么.Please会帮助我谢谢。顺便说一下,我从另一个文件调用此方法,该文件包含并调用此方法,如下所示

代码语言:javascript
复制
 include_once 'functions.php'; 
 $db = new DB_Functions();
 $res = $db->insertRecord($name, $email, $gcm_regid, $password);
        echo json_encode($res);

很抱歉造成误导,但我通过一个安卓应用程序使用这个连接,当我连接时,程序总是进入else部分,而不是if($result) part.However,而不是使用另一个config.php和connect.php,并且只将所有内容写入相同的文件中

代码语言:javascript
复制
       <?php

    class DB_Functions {

        private $db;
    //put your code here
    // constructor
        function __construct() {
            include_once 'connect.php';
        // connecting to database
            $this->db = new DB_Connect();
            $this->db->connect();
        }

    // destructor
        function __destruct() {

        }

    /**
     * Storing new user
     * returns user details
     */
    public function insertRecord($name, $email, $gcm_regid, $password) {
       $con = mysql_connect("blabla","blabla","blabla");
  mysql_select_db('blabla');


        // insert user into database
        $response = array();
        $query0 = "SELECT * FROM gcm_users WHERE name='$name'";
  $result0= mysql_query( $query0 , $con);


        if(mysql_fetch_array($result0) == NULL){

    //insert...
            // insert user into database
  $query = "INSERT INTO `gcm_users`(`id`, `gcm_regid`, `name`, `email`) VALUES (NULL,'$gcm_regid','$name','$email');";

  $result= mysql_query( $query , $con);
        // check for successful store
        if ($result) {
            // get user details
      //      $result2 = mysql_query("SELECT * FROM gcm_users WHERE name = '$name'") or die(mysql_error());
            // return user details
      //      if (mysql_num_rows($result2) > 0) {
  mysql_close($con);

                $response["success"] = 1;
        $response["message"] = "products found";
    // echo no users JSON
        return $response;

    }else{
  mysql_close($con);

        $response["success"] = 0;
        $response["message"] = "No products added";
    // echo no users JSON
        return $response;
    }



}else{
  mysql_close($con);

        $response["success"] = 0;
        $response["message"] = "Product already exists";
    // echo no users JSON
        return $response;
    }

}
?>

当我使用面向对象的连接模式时,$result返回true,并且记录是added.In没有错误,$result变量没有变成true的情况。

EN

回答 1

Stack Overflow用户

发布于 2014-09-04 15:41:56

我无可奉告。不管怎样..。

根据here的说法,“这个扩展从PHP5.5.0开始就被弃用了,并将在未来被删除。”考虑使用PDO:http://php.net/manual/en/book.pdo.php

另外,考虑使用如下内容检查连接和数据库选择:

代码语言:javascript
复制
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if(!$con) 
{
  die(“Connection issue: ” . mysql_error());
}


$db_selection=mysql_select_db(DB_DATABASE);
if(!$db_selection) 
{
  die(“Database selection issue: ” . mysql_error());
}

如果没有传入要作为第二个参数使用的连接,*mysql_select_db将使用mysql_connect()打开的最后一个连接。http://php.net/manual/en/function.mysql-select-db.php

在修改数据库信息以适应我的测试环境之后,它工作得很好,所以我不认为$this-> DB ->connect();是问题所在。我会仔细检查是否使用了正确的DB和表信息。希望这能帮上点忙。新来的。

此外,您发布的functions.php文件缺少:}?>。您是否打开了错误报告?可能需要检查是否正在创建DB_Functions实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25658905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档