繁体   English   中英

PHP OOP与mysqli类

[英]PHP OOP with mysqli class

好的,我到处都在搜索答案,但是我发现这个答案比任何真正的答案都合适,因为它是对任何人的不错要求:

我的类的成员函数使用mysqli的“ mysqli_query”成员函数:

    class mysqlidbconn extends mysqli {

        protected $conn;  //Or private $conn;  
        function dbconnect(){
            $localHost = false;
            $link = new mysqli("server","database username","password","databasename")   
               or ($die = true);
            if ($link->connect_error){
                die("Database selection failed: " . $link->connect_error);
            }else{
                $this->conn = $link;
            }

         }

以及用于执行插入/更新/删除/截断查询的成员函数:

    // To Execute Sql Query with no return result
    function xQuery($sql) {
        $this->conn->query($sql) or die("MySQL Query Execute Error: " . 
            $this->invDBConn->errorno . "<br>" . $this->conn->error . "<br>" . $sql 
            . "<br>");
    }

在表上执行插入和截断操作时,上述情况与$ conn初始化为mysqlidbconn类的PRIVATE或PROTECTED成员变量完全一样,如下面使用mysqlidbconn类的代码所示,不会产生错误,而且不会进行更新发生在mysql表中:

  <?php
      require('path to php file containing mysqlidbconn class');
      $msqli = new mysqlidbconn;
      $msqli->dbconnect();

      //This works
      $sqlinsert = "insert into foo (foo_id, foo_field1...) values ('foo_id value',  
          'foo_field1 value',...);    
      $msqli->xQuery($sqlinsert);  

      //As does this
      $sqltruncate = "truncate foo"; 
      $msqli->xQuery($sqltruncate);

      //But the below does not work, giving no error, result, etc.
      $sqlupdate = "update foo set foo_field1='another foo_field1 value'";
      $msqli->xQuery($sqlupdate);

但是,当使用$ conn变量作为PUBLIC编写该类时,

    $sqlupdate = "update foo set foo_field1='another foo_field1 value'";
    $msqli->xQuery($sqlupdate);

成功更新表。

在写mysqlidbconn类时我不见了,这是怎么回事?

感谢您的帮助,对于根据论坛规则未发布的任何代码,我深表歉意。

尝试:

$link = new mysqli("server","database username","password","databasename") or
             ($die = true);


// To Execute Sql Query with no return result
     function xQuery($sql) {
         $result = $this->conn->query($sql);
         if(!empty($result))
         {
             return $result->fetch_assoc();
         } else {
             return $this->conn->errno;
         }
     }

没有面向对象的方法,问题也不是真正的问题,因为它仅是由测量误差引起的,就像这里有成千上万的问题一样。

没有任何与OOP相关的东西可以干预SQL,从而使某些查询运行,而有些则无法运行。 是的,许多PHP用户在更新查询,更新已更新的数据或检查错误数据库等结果时遇到困难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM