php - 从过程代码转向oop

标签 php ajax json oop

我对编程比较陌生,有大约 1 年的兼职学习经验,我对 PHP 很陌生,只有大约几周的时间,并且使用 w3schools 来帮助我

我现在正在尝试切换到 OOP 风格,但无法理解这个概念,或者更确切地说,如何以及何时应用它,因此转向这里,我在这里潜伏了很长时间,而不是寻求一些帮助和建议的贡献者.

我想要一些帮助/简短解释我如何以 PHP oop 方式编写以下内容

$sql="SELECT name, lastname, member_nr, joindate, order, creditCardInfo
 from members 
 WHERE member_nr = $'member_nr'";
$result = mysql_query($sql) or die("error");
 while($row = mysql_fetch_array){
  echo '<h3>Personal Profile</h3>';
 echo  $name = $row['name'];
  echo $lastName = $row['lastname'];
 :
 :
 }

我的问题是我不知道我是否应该为上述创建一个类,个人资料可以被视为一个人,它是一个对象......?但是我是否在我的类(class)中包含了 HTML 部分和 mysql_query 部分等...我在 OOP 方面遇到了很多问题,自己学习非常困难,这就是为什么我非常感谢任何帮助或建议可以到这里

谢谢

最佳答案

首先您应该使用 mysqli,因为所有 mysql_* 均已弃用,并将在将来从 PHP 中删除。

这里是一个具有一些功能的基础类,但是您应该扩展它以供您使用!并了解您自己没有评论的功能的用途,以了解更多信息。 这会建立与数据库的多个连接,因此阅读一些有关单例的内容对您也有好处!

<?php
class dbconnection {
    private $dbHostname;
    private $dbName;
    private $dbUsername;
    private $dbUserpassword;

    private $error;
    private $querysuccess;
    private $connected;

    private $mysqli;

    public function __construct() {
        $this->dbHostname = 'localhost';
        $this->dbName = 'databasename';
        $this->dbUsername = 'username';
        $this->dbUserpassword = 'password';
        $this->connected = false;
    }
    public function __destruct() {
        $this->mysqli->Close();
    }

    public function connect() {
        //establishing a database connection
        $this->mysqli = new mysqli($this->dbHostname, $this->dbUsername, $this->dbUserpassword, $this->dbName);
        if($this->mysqli->connect_errno) {//When there was an error during the connecting
            echo 'Connection Error:<br>'.$this->mysqli->connect_error;
            $this->connected = false;
        } else {
            $this->connected = true;
        }
        if(!$this->mysqli->set_charset('utf8')) {//Need to be done for some functions!
            echo 'Error during seting the charset: <br>'.$this->mysqli->error;
        }
    }

    public function doquery($query_str) {
        //method which executes the query
        $returnval = false;
        if($this->connected && $query_str != '') {
            //only when connected AND the query is not empty
            $res = $this->mysqli->query($query_str);//this is the equivalent of mysql_query
            if($this->error_get() == '') {//Check for an error
                $this->querysuccess = true;
            } else {
                $this->querysuccess = false;
            }
            $returnval = $res;
        } else {
            echo 'No database connection, this needs some!';
        }
        return $returnval;
    }
    public function query_success() {
        return $this->querysuccess;
    }
    public function affected_rows_get() {
        return $this->mysqli->affected_rows;
    }
    public function error_get() {
        return $this->mysqli->error;
    }
    public function insert_id_get() {
        return $this->mysqli->insert_id;
    }
    public function escape_str($str) {
        return $this->mysqli->real_escape_string($str);
    }
    public function is_connected() {
        return $this->connected;
    }
    public function fetch_assoc(&$res){
        return $res->fetch_assoc();
    }
    public function fetch_assoc_array(&$res){
        return $res->fetch_array(MYSQLI_ASSOC);
    }
}

关于php - 从过程代码转向oop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740027/

相关文章:

javascript - 有没有办法对 public_html 之上的文件进行 AJAX 调用?

javascript - json_decode 通过 $_POST 返回 NULL

java - 假设 Jackson 中根节点的所有子节点都是字段名称是否合理?

php - 在 appcelerator titanium 中使用 Paypal Express Checkout

php - 我如何告诉 Apache2,默认运行 mod_php5,但在 CGI 模式下运行此 VH?

javascript - setInterval 与其他 jQuery 事件 - 递归过多

javascript - 使用 Jquery/javascript 调用函数或从一个浏览器窗口与另一个浏览器窗口进行通信

javascript - Dojo 单选按钮 - 以编程方式检查其中之一

php - 从数据库中检索值

php - 仅断言模拟调用的单元测试