2016-12-01 81 views
0

因此,我编写了一个简单的MySQLi类(从不同的教程+我自己的知识中抓取),并且希望您指出所有错误和/或添加/更改/删除的内容。十分感谢。下面的代码:需要关于OOP的建议PHP MySQL连接

dbclass.php

<?php 
    class Database 
    { 
     protected static $connection; 

     public function __construct() 
     { 
      self::$connection = $this->connect(); 
     } 

     public function __destruct() 
     { 
      self::$connection->close(); 
     } 

     private function connect() 
     { 
      if (!isset(self::$connection)) 
      { 
       $config = parse_ini_file("dbsettings.ini"); 
       self::$connection = new mysqli($config["host"], $config["username"], $config["password"], $config["database"]); 
      } 

      if (!self::$connection) 
       return false; 

      return self::$connection; 
     } 

     public function query($query) 
     { 
      $result = self::$connection->query($query); 
      return $result; 
     } 

     public function select($query) 
     { 
      $rows = array(); 
      $result = $this->query($query); 

      if (!$result) 
       return false; 

      while ($row = $result->fetch_assoc()) 
      { 
       $rows[] = $row; 
      } 

      return $rows; 
     } 

     public function escape($value) 
     { 
      $value = htmlspecialchars($value, ENT_QUOTES, "UTF-8"); 
      return "'".self::$connection->real_escape_string($value)."'"; 
     } 
    }; 
?> 

用法示例

<?php 
    require("php/require/dbclass.php"); 

    if (isset($_POST["login"])) 
    { 
     $conn = new Database; 

     $email = $conn->escape($_POST["email"]); 
     $password = $conn->escape($_POST["password"]); 

     $rows = $conn->select("SELECT * FROM users WHERE email = $email"); 

     if ($rows) 
     { 
      foreach ($rows as $row) 
      { 
       echo $row["username"]."<br />"; 
      } 
     } 
    } 
?> 
+0

什么问题只是一个简单的线? –

+3

第一个建议 - 了解__准备报表__ –

+0

您是否试图让您的dbclass成为单例类? –

回答

-1

堆栈溢出不是一个代码审查的网站,但仍。让你的代码为你逃避是不是更好?你确定你想手工编写的每一个变量逃生通话(与风险忘记是),而不是像这样

$conn = new Database; 
    $rows = $conn->select("SELECT * FROM users WHERE email = ?", [$_POST["email"]]); 
+0

不知道,感谢: ) – daavid245