【问题标题】:I can't connect to my localhost using php我无法使用 php 连接到我的本地主机
【发布时间】:2016-11-09 12:53:00
【问题描述】:
DbConnect.php

<?php

/**
 * Handling database connection

 */
 include_once ('Config.php');

class DbConnect {

    private $conn;

    function __construct() { 

    }

    /**
     * Establishing database connection
     * @return database connection handler
     */
    function connect() {

        // Connecting to mysql database
        $this->conn = new mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

        // Check for database connection error
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
            exit;
        }


        // returing connection resource
        return $this->conn;
    }

}
 class DbHandler {

private $conn;

function __construct() {

    // opening db connection
    $db = new DbConnect();
    $this->conn = $db->connect();
}}

?>

config.php

<?php
/**
 * Database configuration
 */
define('DB_USERNAME', 'medma');
define('DB_PASSWORD', 'medma');
define('DB_HOST', 'localhost');
define('DB_NAME', 'medma_sameer');


/**
 * MSG91 configuration
 */
define('MSG91_AUTH_KEY', "130558AmTMgKzL582187bb");
// sender id should 6 character long
define('MSG91_SENDER_ID', 'MEDMA1');

define('USER_CREATED_SUCCESSFULLY', 0);
define('USER_CREATE_FAILED', 1);
define('USER_ALREADY_EXISTED', 2);
?>

尽管我在Not able to hit api to verify otp ( Used Volley) 之前发布过,但请告诉我可能是什么问题 但是当我开始在我安装的 localhost 文件夹上测试每个 php 文件时,我遇到了最初的步骤,即数据库连接,我上面写的代码除了空白没有显示任何内容

【问题讨论】:

  • 您能否尝试将 127.0.0.1 而不是 localhost 添加到配置中?还有什么错误信息?将调试添加到您的 php 代码stackoverflow.com/questions/845021/… 以便您可以在浏览器中看到错误消息
  • 在顶部添加error_reporting(E_ALL); ini_set('display_errors', 1);然后看看输出是什么

标签: php android


【解决方案1】:

这里有两个问题可能导致页面为空白:

首先是您实际上并没有在脚本中输出任何内容,至少在您发布的代码中没有。

更大的问题是这可能是错误的,因为您似乎不在方法/类中:

 $db = new DbConnect();
 $this->conn = $db->connect();

$this 是在方法的范围内定义的,因此像您这样使用它会导致致命错误:

致命错误:当不在对象上下文中使用 $this ...

附带说明:如果要显示变量的内容,则应使用var_dump() 而不是echo,因为最后一个仅给出数字和字符串的任何有意义的输出;不适用于数据库连接。

【讨论】:

  • 而正如@hrmc87 所写,有些连接需要端口号(例如mamp),所以访问url 必须是localhost:8888/(为db server 留下localhost)
  • @Benoti 可能是,OP 已有的错误处理会在使用代码时显示。
  • @Benoti 我们不需要提及默认端口和 jeroen 我会这样做,如果有任何问题,我会回来。
【解决方案2】:

首先你不好在这里调用一个连接

 $db = new DbConnect();
 $this->conn = $db->connect();

您不能以这种方式在此范围内(在类之外)访问属性 conn 您可以使用$db-&gt;conn 执行此操作。但是在这种情况下,您也无法访问它,因为它是 private

如果你想用你的班级来做这件事,你可以试试

$db = new DbConnect();
$conn = $db->connect();

$conn 下你有一个数据库连接。

@编辑: 也许尝试使用这个

<?php
include_once ('Config.php');

/**
 * Handling database connection
 */
class DbConnect {

    private static $_instance; //The single instance
    private $_conn;

    public static function getInstance() {
       if(!self::$_instance) { // If no instance then make one
          self::$_instance = new self();
       }
       return self::$_instance;
    }

    private function __construct() { 
        // Connecting to mysql database
        $this->_conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

        // Check for database connection error
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
            exit;
        }
    }
    // Get connection
    function getConnection() {
        return $this->_conn;
    }

}

要建立与数据库的连接,您可以这样做

$db = DbConnect::getInstance();
$conn = $db->getConnection();
$query= "SELECT foo FROM .....";
$result = $conn->query($query);

【讨论】:

  • 我已经更新了这个问题,请看看这是我在做什么,但是对于相同的变量名,$this 会在我删除它时产生问题,但我想知道它不起作用方法。我已经做了 $this->conn 因为变量名是一样的。所以引用当前类变量
  • 我现在不太明白你的问题。我可以看到你已经更新了你的问题。你增加了一个新班级。但我很有趣,为什么?什么目的?如果你想通过$db = new DbConnect 调用一个变量来连接它,那么你必须重建你的DbConnect class。但是我想你仍然有问题连接到服务器。您在DbHandler classconn 变量中有您的连接。但是你不能在这个类之外访问它,因为它是private。请更具体,以便我可以帮助您
  • 我这样做是因为我想实现与这个人看到androidhive.info/2015/08/… 相同的东西,这正是我正在做的事情,但在这里我只取了单个文件,不需要或包括 DbConnect 我在单个文件中做简单只是为了连接到数据库,即在两个不同的类中,其次 $conn 变量与 DbConnect 类不同,其他与 DbHandler 类不同,以引用当前我使用的“this”关键字
  • 好的,我可以看到您想要实现的目标。你能在浏览器中访问这个 php 文件吗?您可以在文件顶部添加error_reporting(E_ALL); ini_set('display_errors', 1); 并且可能会出现错误吗?
  • 请检查文件config.php是否在同一目录下,并检查其名称是否与您包含的相同(您首先使用大写字母 - Config.php
猜你喜欢
  • 2015-08-23
  • 2017-04-15
  • 2012-09-09
  • 2014-11-06
  • 2017-07-01
  • 2019-08-29
  • 2013-07-04
  • 1970-01-01
相关资源
最近更新 更多