我正在编写一个类和一些函数来连接数据库并从表中检索信息。 我浏览过以前有类似标题的帖子,但大多数都是使用mysql函数编写的,我使用的是mysqli函数。

我希望有人可以通过这个简单的脚本让我知道我在哪里弄错了。

这是我的class.connect.php

<?php

    class mySQL{
        var $host;
        var $username;
        var $password;
        var $database;
        public $dbc;

        public function connect($set_host, $set_username, $set_password, $set_database)
        {
            $this->host = $set_host;
            $this->username = $set_username;
            $this->password = $set_password;
            $this->database = $set_database;

            $this->dbc = mysqli_connect($this->host, $this->username, $this->password,           $this->database) or die('Error connecting to DB');        
        }

        public function query($sql)
        {
            return mysqli_query($this->dbc, $sql) or die('Error querying the Database');
        }

        public function fetch($sql)
        {        
            $array = mysqli_fetch_array($this->query($sql));          
            return $array;
        }

        public function close()
        {
            return mysqli_close($this->dbc);
        }
    }
    ?>

这是我的index.php

<?php
        require_once ("class.connect.php");

        $connection = new mySQL();

        $connection->connect('localhost', 'myDB', 'joker', 'names_list');
        $myquery = "SELECT * FROM list";
        $query = $connection->query($myquery);        

        while($array = $connection->fetch($query))
        {
            echo $array['first_name'] . '<br />';
            echo $array['last_name'] . '<br />';                
        }

        $connection->close();
?>

我收到错误说Error querying the Database

===============>>#1 票数:2

如果你没有自己的db抽象来学习php和mysql,你可以使用Medoo( http://medoo.in/ )。

它是一个免费的小型数据库框架,可以节省大量的工作和时间。

===============>>#2 票数:2

几个问题: -

  1. 如果没有提供正确的mysql错误你就不会死(并且优雅地退出是好的做法)

  2. fetch方法只是FETCH的第一行

  3. mysqli有OO方法,为什么还在使用程序功能?

===============>>#3 票数:2 已采纳

问题是:

    public function fetch($sql)
    {        
        $array = mysqli_fetch_array($this->query($sql));          
        return $array;
    }

或这个:

 while($array = $connection->fetch($query))

因为您正在使用查询的结果再次进行查询。 基本上,你在做:

$r = mysqli_query($this->dbc, $sql);
$array = mysqli_fetch_array(mysqli_query($this->dbc, $r));

并且您收到错误,因为$ r不是查询字符串。 当它被转换为字符串时,它是一个“1”(来自你的其他评论)。

尝试将函数更改为(更改变量名称,以便您可以看到差异):

    public function fetch($result)
    {        
        return mysqli_fetch_array($result);
    }

或者直接调用该函数。

===============>>#4 票数:1

试着检查一下

https://pramodjn2.wordpress.com/

$database = new db();

$query = $database->select(‘user’);

$st = $database->result($query);

print_r($st);

  class db {
                public $server = ‘localhost';
                public $user = ‘root';
                public $passwd = ‘*****';
                public $db_name = ‘DATABASE NAME';
                public $dbCon;

        public function __construct(){
                $this->dbCon = mysqli_connect($this->server, $this->user, $this->passwd, $this->db_name);
        }

        public function __destruct(){
                mysqli_close($this->dbCon);
        }

    /* insert function table name, array value
       $values = array(‘first_name’ => ‘pramod’,’last_name’=> ‘jain’);
    */            
       public function insert($table,$values)
       {
            $sql = “INSERT INTO $table SET “;
               $c=0;
            if(!empty($values)){
                foreach($values as $key=>$val){
                    if($c==0){
                        $sql .= “$key='”.htmlentities($val, ENT_QUOTES).”‘”;
                    }else{
                        $sql .= “, $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                    }
                    $c++;
                }
            }else{
              return false;
            }
            $this->dbCon->query($sql) or die(mysqli_error());
            return mysqli_insert_id($this->dbCon);
     }

     /* update function table name, array value
        $values = array(‘first_name’ => ‘pramod’,’last_name’=> ‘jain’);
        $condition = array(‘id’ =>5,’first_name’ => ‘pramod!’);
     */        
     public function update($table,$values,$condition)
     {
        $sql=”update $table SET “;
        $c=0;
        if(!empty($values)){
            foreach($values as $key=>$val){
                if($c==0){
                    $sql .= “$key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }else{
                    $sql .= “, $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }
                $c++;
            }
        }
        $k=0;    
        if(!empty($condition)){
            foreach($condition as $key=>$val){
                if($k==0){
                    $sql .= ” WHERE $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }else{
                    $sql .= ” AND $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }
                $k++;
            }
        }else{
          return false;
        }
        $result = $this->dbCon->query($sql) or die(mysqli_error());
        return $result;
     }

     /* delete function table name, array value
        $where = array(‘id’ =>5,’first_name’ => ‘pramod’);
     */    
    public function delete($table,$where)
    {
        $sql = “DELETE FROM $table “;
        $k=0;    
        if(!empty($where)){
            foreach($where as $key=>$val){
                if($k==0){
                    $sql .= ” where $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }else{
                    $sql .= ” AND $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }
                $k++;
            }
        }else{
            return false;
        }
           $del = $result = $this->dbCon->query($sql) or die(mysqli_error());
            if($del){
               return true;
            }else{
               return false;
            }
        }


    /* select function
       $rows = array(‘id’,’first_name’,’last_name’);
       $where = array(‘id’ =>5,’first_name’ => ‘pramod!’);
       $order = array(‘id’ => ‘DESC’);
       $limit = array(20,10);
    */
    public function select($table, $rows = ‘*’, $where = null, $order = null, $limit = null)
    {
       if($rows != ‘*’){
         $rows = implode(“,”,$rows);
       }

        $sql = ‘SELECT ‘.$rows.’ FROM ‘.$table;
        if($where != null){
            $k=0;
            foreach($where as $key=>$val){
                if($k==0){
                    $sql .= ” where $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }else{
                    $sql .= ” AND $key='”.htmlentities($val, ENT_QUOTES).”‘”;
                }
                $k++;
            }    
        }

        if($order != null){
            foreach($order as $key=>$val){
                    $sql .= ” ORDER BY $key “.htmlentities($val, ENT_QUOTES).””;
            }    
        }    

      if($limit != null){
             $limit = implode(“,”,$limit);
             $sql .= ” LIMIT $limit”;

        }
        $result = $this->dbCon->query($sql);
        return $result;

    }  

    public function query($sql){
    $result = $this->dbCon->query($sql);
    return $result;
    }

    public function result($result){
    $row = $result->fetch_array();
    $result->close();
    return $row;
    }

    public function row($result){
    $row = $result->fetch_row();
    $result->close();
    return $row;
    }

    public function numrow($result){
    $row = $result->num_rows;
    $result->close();
    return $row;
    }

 }

===============>>#5 票数:1

fetch方法中的mysqli_fetch_array函数需要两个参数,即SQL结果和要返回的数组类型。 在我的情况下,我使用MYSQLI_ASSOC。

那应该是这样的:

public function fetch($ sql){
$ array = mysqli_fetch_array($ this-> query($ sql),MYSQLI_ASSOC);
return $ array; }

===============>>#6 票数:1

显然SELECT * FROM list上发生错误,你可以使用mysqli_error来查找错误:

return mysqli_query($this->dbc, $sql) or die('Error:'.mysqli_error($this->dbc));

这将显示确切的错误消息,并将帮助您解决问题。

===============>>#7 票数:-1

**classmysql.inc.php**

    <?php
        class dbclass { 
            var $CONN;
            function dbclass() { //constructor
                $conn = mysql_connect(SERVER_NAME,USER_NAME,PASSWORD);  
                //$conn = mysql_connect(localhost,root,"","");
                if(!$conn) 
                    {   $this->error("Connection attempt failed");      }
        if(!mysql_select_db(DB_NAME,$conn)) 
                    {   $this->error("Database Selection failed");      }
                $this->CONN = $conn;
                return true;
            }
            //_____________close connection____________//
            function close(){
                $conn = $this->CONN ;
                $close = mysql_close($conn);
                if(!$close){
                  $this->error("Close Connection Failed");  }
                return true;
            }
            function error($text) {
                $no = mysql_errno();
                $msg = mysql_error();
                echo "<hr><font face=verdana size=2>";
                echo "<b>Custom Message :</b> $text<br><br>";
                echo "<b>Error Number :</b> $no<br><br>";
                echo "<b>Error Message  :</b> $msg<br><br>";
                echo "<hr></font>";
                exit;
            }
            //_____________select records___________________//
            function select ($sql=""){
                if(empty($sql)) { return false; }
                if(!eregi("^select",$sql)){ 
                  echo "Wrong Query<hr>$sql<p>";
                        return false;       }
                if(empty($this->CONN)) { return false; }
                $conn = $this->CONN;
                $results = @mysql_query($sql,$conn);            
                if((!$results) or empty($results))  {   return false;       }
                $count = 0;
                $data  = array();
                while ( $row = mysql_fetch_array($results)) {   
                    $data[$count] = $row;
                    $count++;       }
                mysql_free_result($results);
                return $data;
            }

            //________insert record__________________//
            function insert ($sql=""){
                if(empty($sql)) { return false; }
                if(!eregi("^insert",$sql)){ return false;       }
                if(empty($this->CONN)){ return false;       }
                $conn = $this->CONN;            
                $results = @mysql_query($sql,$conn);            
                if(!$results){
                    $this->error("Insert Operation Failed..<hr>$sql<hr>");
                    return false;       }
                $id = mysql_insert_id();
                return $id;
            }
            //___________edit and modify record___________________//
            function edit($sql="")  {
                if(empty($sql)) {   return false;       }
                if(!eregi("^update",$sql)){ return false;       }
                if(empty($this->CONN)){ return false;       }
                $conn = $this->CONN;
                $results = @mysql_query($sql,$conn);
                $rows = 0;
                $rows = @mysql_affected_rows();
                return $rows;
            }
            //____________generalize for all queries___________//
            function sql_query($sql="") {   

                if(empty($sql)) { return false; }
                if(empty($this->CONN)) { return false; }
                $conn = $this->CONN;
                $results = mysql_query($sql,$conn) or $this->error("Something wrong in query<hr>$sql<hr>");

                if(!$results){
                   $this->error("Query went bad ! <hr>$sql<hr>");
                        return false;       }       
                if(!eregi("^select",$sql)){return true;         }
                else {
                    $count = 0;
                    $data = array();
                    while ( $row = mysql_fetch_array($results))
                    {   $data[$count] = $row;
                        $count++;               }
                    mysql_free_result($results);
                    return $data;
                }
            }   

        function extraqueries($sql="")  {   

                if(empty($sql)) { return false; }
                if(empty($this->CONN)) { return false; }
                $conn = $this->CONN;
                $results = mysql_query($sql,$conn) or $this->error("Something wrong in query<hr>$sql<hr>");

                if(!$results){
                   $this->error("Query went bad ! <hr>$sql<hr>");
                        return false;       }       
                else {
                    $count = 0;
                    $data = array();
                    while ( $row = mysql_fetch_array($results))
                    {   $data[$count] = $row;
                        $count++;               }
                    mysql_free_result($results);
                    return $data;
                }
            }   

        } 

    ?>

**config.inc.php**
    <?php
    ini_set("memory_limit","70000M");
    ini_set('max_execution_time', 900);
    ob_start();
    session_start();

    error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

    ############################################
    #   Database Server
    ############################################

    if($_SERVER['HTTP_HOST']=="localhost")
    {
        define("DB_NAME","DB_NAME");
        define("SERVER_NAME","SERVER_NAME");
        define("USER_NAME","USER_NAME");
        define("PASSWORD","PASSWORD");
    }
    else
    {
        define("DB_NAME","DB_NAME");
        define("SERVER_NAME","SERVER_NAME");
        define("USER_NAME","USER_NAME");
        define("PASSWORD","PASSWORD");
    }



    #############################################
    #       File paths
    #############################################
    // For  the Database file path
    include("system/classmysql.inc.php");



    //For the inc folders
    define("INC","inc/");

    //For the Function File of the pages folders
    define("FUNC","func/");

    //For the path of the system folder
    define("SYSTEM","system/");


    $table_prefix = 'dep_';

    ################################################################
    #       Database Class
    ################################################################
    $obj_db = new dbclass();

    ?>

**Function Page**


    <?php
    // IF admin is not logged in 
    if(!isset($_SESSION['session_id']))
    {
        header("location:index.php");
    }

    $backpage = 'page.php?type=staff&';
    if(isset($_REQUEST['endbtn']) && trim($_REQUEST['endbtn']) == "Back")
    {
        header("location:".$backpage);
        die();
    }

    // INSERT into database.
    if(isset($_REQUEST['submit']) && trim($_REQUEST['submit']) == "Submit")
    {   
        $pass = addslashes(trim($_REQUEST['password']));
        $password = encrypt($pass, "deppro");

        $username = addslashes(trim($_REQUEST['username']));

        $sql = "select * from ".$table_prefix."users where `UserName` ='".$username."'";
        $result = $obj_db->select($sql);
        if(count($result) == 0)
        {

        $insert="INSERT INTO ".$table_prefix."users (`UserName`)VALUES ('".$username."')";
        $sql=$obj_db->insert($insert);

        $newuserid = mysql_insert_id($obj_db->CONN);
        }
    header("location:".$backpage."msg=send&alert=2");
        die();
    }   

    // DELETE record from database
    if(isset($_REQUEST['action']) && trim($_REQUEST['action'])==3)
    {
        if(isset($_REQUEST['id']) && trim($_REQUEST['id']!=""))
        {   
            $id =  site_Decryption($_REQUEST['id']);
            $sql_del = "Delete from ".$table_prefix."users where StaffID ='$id'";
            $del = $obj_db->sql_query($sql_del);
            header("location:".$backpage."msg=delete&alert=2");
            die();
        }
    }


    // UPDATE the record
    $action=1;
    if((isset($_REQUEST['action']) && trim($_REQUEST['action'])==2) && (!(isset($_REQUEST['submit']) && trim($_REQUEST['submit']) == "Submit")))
    {
        if(isset($_REQUEST['id']) && trim($_REQUEST['id']!=""))
        {
            $id =  site_Decryption($_REQUEST['id']);

            //$id =  $_SESSION['depadmin_id'];
            $sql = "select * from ".$table_prefix."users where StaffID ='$id'";
            $result = $obj_db->select($sql);
            if($result)
            {
                foreach($result as $row)
                {
                    $title = stripslashes($row['StaffTitle']);

                    $action=2;
                }
            }
            if(isset($_REQUEST['submit']) && trim($_REQUEST['submit']) == "Update")
            {   

                $title = addslashes(trim($_REQUEST['title']));


                $sql_upd ="UPDATE ".$table_prefix."users SET `StaffTitle` = '$title' WHERE StaffID ='$id'";
                $result = $obj_db->sql_query($sql_upd);
                $action=1;
                header("location:".$backpage."msg=edited&alert=2");
                die();
            }       
        }
    }



    if(isset($_REQUEST['vid']) && trim($_REQUEST['vid']!=""))
     {
            $id =  site_Decryption($_REQUEST['vid']);
            $sql = "select * from ".$table_prefix."users where StaffID ='$id'";
            $result = $obj_db->select($sql);
            if($result)
            {
                foreach($result as $row)
                {
                    $username = stripslashes($row['UserName']);             
                }
            }
    }


    ?>

<td class="center"><a href="cproperty.php?script=edit&action=2&id=<?php echo site_Encryption($sql[$j]['PropertyID']); ?>"><span class="editbutton">&nbsp;</span></a> &nbsp;<a href="cproperty.php?action=3&id=<?php echo site_Encryption($sql[$j]['PropertyID']); ?>" onClick="return confirm('Are you sure to delete?');"><span class="deletebutton">&nbsp;</span></a>&nbsp; <a class="lightbox" title="View" href="cpropertyview.php?script=view&vid=<?php echo site_Encryption($sql[$j]['PropertyID']); ?>&lightbox[width]=55p&lightbox[height]=60p"><span class="viewbutton">&nbsp;</span></a></td>

  ask by 125369 translate from so

未解决问题?本站智能推荐:

5回复

带OOP的OOPS,PHP数据库连接

大家好,我正在用OOP PHP开发数据库连接,但我一直坚持这个错误; 警告:mysqli_query()期望参数1为mysqli,在第26行的C:\\ Users ... \\ function.php中给出null。 我是OOP的新手,因此非常感谢您的帮助
3回复

PHP OOP数据库设计

好吧,这只是一个简单的问题,我可能会为此稍微松一点,但我只是在寻找一些指导,因为我完全是自学成才。 我做了很多阅读并尝试做了很多建设 - 我说我正在进入一个很好的中间阶段的php,mysql和一般的网络知识 - 绝不是先进或过于自信 - 还在学习。 我真的想在PHP中解决OOP问题,所以
2回复

使用php和mysqli的OOP从数据库返回数据

我有一个数据库php文件和一个用户php文件。 数据库是我连接数据库的地方。 这是用户页面,我包括数据库页面。 我收到一个错误,说“未定义的变量:mysqli”和“在非对象上调用成员函数prepare()”。 任何人都可以帮助任何帮助。 非常感谢您。
2回复

PHP OOP扩展类无法访问数据库连接

也许你可以帮忙。 我有一个创建MySql连接的主类。 然后,我扩展了这一堂课。 除非执行了parent :: __ construct();否则我无法访问该连接。 最近在执行此操作时收到一条错误消息,提示我连接断开。 因此,如何对此进行编程,以确保它不会耗尽连接并且可以访问数据库连
1回复

PHP OOP高效的数据库读取减少

六年前,我没有任何经验就开始了一个新的PHP OOP项目,因此我在进行过程中就对它进行了总结。 无论如何,我注意到我有时功能强大的mySQL服务器有时很容易陷入困境,并且在想出一个限制数据库活动的最佳方法时,我想出了一个例子…… 看来这应该可以有效地减少对db的必要读取。 如果填充了
2回复

PHP OOP调用类中的数据库

我真的很困惑从类内部与数据库接口的正确方法是什么,我知道我在下面做错了,但是我仍然希望它至少可以工作? 然后,我使用下面的代码在另一页上显示结果,第一个实例工作正常,但第二个实例抛出错误。 因此,我基本上要问的是,从与数据库的连接位于一个位置的类中与数据库接口的一种好方法是什么?
2回复

PHP和Mysqli OOP - 处理数据库

今天我试图将我的函数转换为PHP类。 我尝试了一些基本步骤。 我现在必须创建另一个类。 我在数据库中创建了一个虚拟表。 但我不认为这是做正确事情的正确方法。 我觉得他们中的一些是正确的,其中一些是错的。 当我调用query()函数时,我是否需要在每个类的构造方法中始终
1回复

在PHP OOP数据库类__construct()上获取错误

我正在尝试在PHP和Mysqli中使用OOP设置基本数据库类,这是我拥有的代码 但我收到以下错误 您能告诉我为什么会这样吗? 谢谢
2回复

PHP OOP数据库类 - 真的需要吗? [关闭]

我目前正在学习使用PHP中的OOP进行编码,并经常遇到数据库类和抽象层。 我将CMS编码作为一项重大挑战,我开始编写数据库类而不考虑它太多。 我实际上倾向于使用MySQLi(我觉得按原样使用它很好),而不是创建一个类来处理CRUD操作,所以我真的需要一个类来处理所有这些东西吗? 如
2回复

OOP mysqli数据库功能

我是PHP OOP的初学者,并且尝试使用我的代码。 因此,我想做的第一件事是编写一个具有数据库连接和插入功能的基本类。 所以我想要的情况是这样的: -我想在课堂上创建它将控制连接和插入函数的类。 问题是,我的$ connect变量无法通过另一个函数工作,那么我该怎么做才能做到这一点?