如何避免mysqli连接以及如何使用real_escape_string?

时间:2015-03-11 11:36:14

标签: php mysql oop

这里摘自php类:

DB.class.php

class DB {    
    protected $db_name = '';
    protected $db_user = '';
    protected $db_pass = '';
    protected $db_host = '';
    protected $connection;

    public function connect() {
        $this->connection = mysqli_connect($this->db_host, $this->db_user, $this->db_pass);
        mysqli_select_db($this->connection, $this->db_name);

        return true;
    }

    public function processRowSet($rowSet, $singleRow = false) {
        $resultArray = array();
        while ($row = mysqli_fetch_assoc($rowSet)) {
            array_push($resultArray, $row);
        }

        if ($singleRow === true)
            return $resultArray[0];

        return $resultArray;
    }

    public function insert($data, $table) {
        $columns = "";
        $values = "";

        foreach ($data as $column => $value) {
            $columns .= ($columns == "") ? "" : ", ";
            $columns .= $column;
            $values .= ($values == "") ? "" : ", ";
            $values .= $value;
        }

        $sql = "insert into $table ($columns) values ($values)";

        mysqli_query($this->connection, $sql) or die(mysqli_error($this->connection));

        //return the ID of the user in the database.
        return mysqli_insert_id($this->connection);
    }
}

插入-entry.php

require_once 'db.php';

$headline = $_POST['headline'];
$description = $_POST['description'];

$data = array(
        'headline' => $headline,
        'description' => $description
    );

$db->insert($data, 'entries');´

关于这门课程的专业使用,我有三个问题:

  • Avoding mysqli连接:该类之前是mysql,我将其更改为mysqli。有没有办法避免我总是需要将mysql连接作为参数传递给我想做mysqli操作,比如mysqli_query()?
  • 清理用户输入:如何构建$ db-> real_escape_string?我希望它适用于来自用户并进入我的数据库的所有值。这是我可以在DB.class.php中的insert函数中添加的东西,还是我必须在我的外部php文件中应用它,例如在这个例子中插入entry.php?
  • 捕获错误:在此示例中的外部php文件中,例如insert-entry.php,如何 我可以捕获函数的错误,例如$ db-> insert()函数吗?我的目标是 如果发生错误,则将用户定向到错误页面(通过 头:位置)。重要提示:我希望能够在不同的php文件中创建单独的错误处理。

0 个答案:

没有答案