【问题标题】:using mysqli with oop php [closed]将mysqli与oop php一起使用[关闭]
【发布时间】:2014-03-22 11:56:30
【问题描述】:

这是我的 connection.php 文件

<?php

class Connection {

    public $db_host = 'localhost';
    public $db_user = 'root';
    public $db_pass = '';
    public $db_name = 'lybri';

    public function connect() {

        $this->connect_db = new mysqli($this->db_host, $this->db_user, $this->db_pass, $this->db_name);

        if (mysqli_connect_errno()) {
            printf("Connection failed: %s\n", mysqli_connect_error());
            exit();
        }
        return true;
    }

    public function get_connection() {
        return $this->connect_db;
    }

}

$db = new Connection('localhost', 'user', 'pass', 'name');
$db->connect();
$connection = $db->get_connection();

此脚本运行正常,没有任何错误。

当我需要在另一个文件中运行 mysql 查询时,我只需将这个 connection.php 文件包含到该文件中并这样做。

mysqli_query($connection, "SELECT * FROM users WHERE username = '$username' AND password = '$hashedPassword' ");

我只需要知道,这是最好的做法吗?

谢谢。

【问题讨论】:

  • 这个问题似乎跑题了,因为它属于Codereview Stackexchange
  • 我会返回 true 或 false,而不是 exit();如果你问我,其他一切都很好。
  • @ShankarDamodaran - 哎呀我不知道。我可以将此问题移至 codereview 吗?
  • 我认为模组会这样做,或者您可以删除它并在那里发布一个新的。
  • @tastro-耶!收到。谢谢。

标签: php mysql oop mysqli


【解决方案1】:

是的,这是最佳实践,我相信很多人只包含这样的 connection.php(我也是)。

但我要说的是使用 mysqli_real_escape_string 来防止mysql injection attack。 (不推荐)或使用PDO/mysqli

在查询之前像这样使用mysqli_real_escape_string($db,$id)

$username=mysqli_real_escape_string($db,$username);
$password=mysqli_real_escape_string($db,$password);

【讨论】:

  • $username=mysql_real_escape_string($username); $username=mysqli_real_escape_string($db,$username); OP 正在使用mysqli_*
  • 是的,我忘记了,谢谢
  • 不客气。但是,您忘记了 i,但我编辑了您的答案以反映正确的更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多