【问题标题】:OPP mysqli_query() expect two parameters...OPP mysqli_query() 需要两个参数...
【发布时间】:2016-10-01 07:57:10
【问题描述】:

我正在努力学习面向对象的编程。 我的问题是如何在类中的mysqli_query()下添加链接。

在程序样式中,我只是创建一个带有连接详细信息的 $variable,然后在 mysqli_query($variable, $sql) 等中使用它。

在我的课堂上,我有函数 connect(),它将连接到数据库并返回 true,但是我可以在我的 mysqli_query() 中使用它吗?请在此处查看代码:

    <?php

class DB {
    protected $db_name = 'OOP_forum';
    protected $db_user = 'Marcel';
    protected $db_pass = *****;
    protected $db_host = 'localhost';


    public function connect() {

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

        return true;
    }

    public function processRowSet($rowSet, $singleRow = false)  {

        $resultArray = array();
        while($row = mysqli_fetch_assoc($rowSet)) {
            arraypush($resultArray, $row);
        }

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


      public function select ($table, $where, $column = '*')  {
          $sql = "SELECT $column FROM $table WHERE $where";
          $result = mysqli_query($sql);

              if(mysqli_num_row($result) == 1 ){
                 return $this->processRowSet($result, true);
               } else
                  { return $this->processsRowSet($result);
             }
          }



      public function update ($data, $table, $where)    {

                      foreach ($data as $column->$value) {

                          $sql = "UPDATE $table SET $column = $value WHERE $where";
                          mysqli_query($sql) or die(mysqli_error());
                             }
                          return true;
                      } 

      public function delete ($table, $column, $where)  {
          $sql = "DELETE FROM $table WHERE $column = $where";

              if (query($sql)=== TRUE) {
              echo "Record Deleted sucessfully";
          }else {
              echo "Error deleting record: " . $connection->error;
          }

      }               

      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($sql) or die(mysqli_error());

             return mysqli_insert_id();
              }      

          } 


?>

【问题讨论】:

  • 如果您正在学习 OOP 语法,为什么要使用过程式 mysqli?
  • 您必须在此处将连接对象作为第一个参数传递:- $result = mysqli_query($sql);
  • 感谢 cmets。这就是我试图将连接作为第一个参数传递给 mysqli_query(something, $sql) 但不知道如何从返回 true 的连接函数中实现这一点。将学习更多:)

标签: php mysqli


【解决方案1】:

在尝试学习 OOP 编程之前,您必须学习基本的 OOP 语法。

为了做到这一点,暂时忘记创建自己的课程并学习如何使用已经制作的课程。所以,首先要学会如何使用mysqli。这已经是一堂课了。

更好的是,改为学习 PDO,因为与 mysqli 不同,它已经是一个随时可用的数据库访问类,使用它你不需要像 processRowSet 这样的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多