使用数据库时页面变为空白

时间:2014-07-08 14:53:53

标签: php mysqli

我正在为朋友制作表格。当用户提交表单时,他们的IP地址被添加到数据库表中。每次用户访问表单时,我都会检查他们的IP地址是否已经在表中。如果是,那么他们已经提交了表格。

我之前做过这个,但决定改变它的工作原理,现在当我运行任何查询或连接到数据库时,整个页面都变成空白。

这是我的数据库类(class.Database.inc.php):

<?php

/**
 * MySQLi database; only one connection is allowed. 
 */
class Database {
  private $_connection;
  // Store the single instance.
  private static $_instance;

  /**
   * Get an instance of the Database.
   * @return Database 
   */
  public static function getInstance() {
    if (!self::$_instance) {
      self::$_instance = new self();
    }
    return self::$_instance;
  }

  /**
   * Constructor.
   */
  public function __construct() {
    $this->_connection = new mysqli('localhost', 'MHP_TICKET_ADMIN', 'fZx_142n', 'MHP_TICKET_SYS');
    // Error handling.
    if (mysqli_connect_error()) {
      trigger_error('Failed to connect to MySQL: ' . mysqli_connect_error(), E_USER_ERROR);
    }
  }

?>

表单文件顶部的代码(index.php):

<?php
require_once('class.Database.inc.php');
// Check database to see if the user has already submitted.
$user_ip = $_SERVER['REMOTE_ADDR'];

$db = Database::getInstance();
$mysqli = $db->getConnection();

$sql_query = "SELECT ip FROM ip_address WHERE ip = '$user_ip'";
$result = $mysqli->query($sql_query);
if ($row = $result->fetch_assoc()) {
    die('You have already placed your submission.');
}

?>

修改 我以错误的顺序输入了凭证,我花了2个小时才弄清楚......

1 个答案:

答案 0 :(得分:2)

我知道你现在已经解决了这个问题(我会评论,但我还没有达到50)但是为了将来参考这可能会有所帮助 - PHP中一个意想不到的空白页面很可能意味着错误被抛出。

我习惯在我的脚本顶部包含error_reporting(-1)(在本例中为class.Database.inc.php文件),因此我在开发和调试时会立即看到这些错误。当你上线时将其切换到error_reporting(0)以确保最终用户隐藏错误。