• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
يك php كار حرفه اي اينجا هست مرا راهنمائي كنه؟
#1
دوستان سلام
من سر يك پروژه دانشگاهي مشكل دارم. يك برنامه به زبان پي اچ پي دارم مي نويسم كه يه جائي از آن ايراد داره خواهش مي كنم راهنمائي كنيد. خلاصه برنامه اينه كه مي خوام به بانك ماي اس كيو ال وصل بشم و عمل درج و حذف و انتخاب و بروز رساني را انجام بدم منتها مي خوام بوسيله يك كلاس اينكار را انجام بدم يعني query را بدم به توابع عضو اون كلاس و از اون كلاس جواب بگيرم. اينم برنامه مشكل دار من .
اين همون كلاسيه كه گفتم:

کد پی‌اچ‌پی:
<?php

class DataAccess{
private 
$pass="123";
private 
$user="root";
private 
$server="localhost";
private 
$port="3306";
private 
$database;
private 
$mysqli;
private 
$result;

//////////////////////////////////////////////////////
function _construct($value){
$this->database=$value;
}
//end of constructor-

////////////////////////////////////////////////////
function connect(){
$this->mysqli=new mysqli($this->server,$this->user,$this->pass,$this->database);
if(
$this->mysqli->errno){
printf("Unable to connect to the database:
%s"
,$this->mysqli->error);
exit();
}
//end of if statement
}//end of connect


////////////////////////////////////////////
function hello(){
echo 
"hello";
}
//end of hello-

//////////////////////////////////
function disconnect(){
$mysqli.close();
}
//end of disconnect

///////////////////////////////////////////////////////////
function select_query($valu){

$this->result $this->mysqli->query($valuMYSQLI_STORE_RESULT);
// Iterate through the result set
[u]while ($row $this->result->fetch_array(MYSQLI_NUM))[/u]
سطر بالا سطريه كه خطا روي آن گرفته شده است.
{
$sku $row[0];
$name $row[1];
$price $row[2];
echo 
"($sku$name$price 
"
;
}
}
//end of excute_query function
///////////////////////////////////////////////////////
function executeQuery($val){
$this->result=$this->mysqli->query($val,MYSQLI_STORE_RESULT);
echo 
"query has been excute";

}
// end of excuteQuery function.

}//end of class
?>
اينم فايلي است كه شئي از اين كلاس ايجاد و تابع عضو را صدا مي زنم
کد پی‌اچ‌پی:
<?php
//passenger.php
include "DataAccess.php";

$dal=new DataAccess("bus");
$dal->connect();
$dal->hello();

$query "select * from passenger ";

$dal->select_query($query);

//Fatal error: Call to a member function fetch_array() on a non-object in /opt/lampp/htdocs/DataAccess.php on line 42
/*
$mysqli=new mysqli("localhost","root","123","bus");
if($mysqli->errno){
printf("Unable to connect to the database:
%s",$mysqli->error);
exit();
}

$query = "SELECT * from passenger";
$result = $mysqli->query($query, MYSQLI_STORE_RESULT);
// Iterate through the result set
while(list($ID, $Fname, $Lname,$codemelli,$email) = $result->fetch_row())
printf("(%s) %s   %s: %s %s 
", $ID, $Fname, $Lname,$codemelli,$email);

*/
?>
اينم خطائي كه مي ده
Fatal error: Call to a member function fetch_array() on a non-object in /opt/lampp/htdocs/DataAccess.php on line 4[/i]2
يه سوال ديگه هم دارم و اون اينكه چطور مي تونم نتيجه يك select را در يك چك ليست يا Drop down بياورم. اگه بخوام در پروژه دقيتر بگويم مي خواهم نتيجه يك select از جدول شهرها در ديتابيس را داخل يك drop down listيا optional listنمايش دهم.
ممنون
اين كد هم تازه نوشتم همون انتظار را ازش دارم منتها از ارث بري استفاده كرده ام. اين هم كار نمي كنه و خطا مي ده
کد پی‌اچ‌پی:
<?php
class Dispatcher extends mysqli{
    private 
$pass="123";
    private 
$user="root";
    private 
$server="localhost";
    private 
$port="3306";
    private 
$database;
    
    public function 
_construct($database){
        
parent::_construct($this->server,$this->user,$this->pass,$database);
        if (
mysqli_connect_error()) {
            die(
'Connect Error (' mysqli_connect_errno() . ') '
                    
mysqli_connect_error());
        }
//end of if        
    
}// end of Constructor
    
    
public function excute_query($val){
        
$result=parent::query($val,MYSQL_STORE_RESULT);
        while(list(
$ID$Fname$Lname,$codemelli,$email) = $result->fetch_row()){
            
printf("(%s) %s    %s: %s %s <br />"$ID$Fname$Lname,$codemelli,$email);
        }
//end of while        
    
}//end of excute_query function
}//end of Dispatcher class
?>
  پاسخ
تشکر شده توسط :
#2
وقتی حرف برنامه نویس حرفه ای میاد وسط پاسخ دادن خیلی سخت می شه ، دوست عزیز من حرفه ای نیستم اما می تونید از این کلاسی که براتون میگزارم استفاده کنید

کد پی‌اچ‌پی:
<?php

class mysql {

    
// Database server information
    
var $host;                 // (string)  Host server of database
    
var $user;                 // (string)  User
    
var $password;             // (string)  Password
    
var $db_name;              // (string)  Database that will be selected
    
var $port;                 // (int)     Server port
    
var $connection false;   // (link identifier)   MySQL connection link identifier
    
var $result;               // (link identifier)   MySQL result link identifier
    
    // Class operation setup
    
    
    // 0 LOG_NONE
    // 1 ECHO
    // 2 HIDDEN ECHO
    // 3 LOG FILE
    
var $debuglv  ;
    var 
$error_level  ;
    var 
$error_desc   "No errors" ;
    var 
$logfile      "datalog" ;
    var 
$filehdl      ;
    var 
$messsages    = array() ;  
      
    var 
$affected_rows ;    
    var 
$num_rows      ;    
    var 
$recordcount   ;    
    var 
$lastid        ;
    var 
$sqlString;
    
    var 
$query_no     ;    



    function 
mysql($host ""$user ""$password ""$db_name ""$port "")
    {
        
$this->host     = ( !empty( $host ) )      ?  (string)$host      :  "localhost";
        
$this->user     = ( !empty( $user ) )      ?  (string)$user      :  "root";
        
$this->password = ( !empty( $password ) )  ?  (string)$password  :  "";
        
$this->db_name  = ( !empty( $db_name ) )   ?  (string)$db_name   :  "";
        
$this->port     = ( !empty( $port ) )      ?  (int)$port         :  3306;
    }




    function 
connect($is_persistent false)
    {                
        
$this->logfile_init() ;

        if (!
$is_persistent) {
            
$this->connection = @mysql_connect($this->host.':'.$this->port$this->user$this->password);
        } else {
            
$this->connection = @mysql_pconnect($this->host.':'.$this->port$this->user$this->password);
        }
        
$this->error_report() ;
        
        if (!
$this->connection) {
          
// Conection failed
          
$this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" ) ;          
          
$this->release_db() ;
        } else { 
$this->select_db(); }        
    }

    function  
select_db($db_name=false){
         if (
$db_name !== false$this->db_name=$db_name;
        
      
// Select a database...
      
if (@mysql_select_db($this->db_name,$this->connection)) {
        
// Selecting Database OK
        
$this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION O.K.: Connected to database " $this->db_name .  "\r\n" );
      } else {
        
// Failed to select the database... abort connection process
        
$this->error_report() ;
        
$this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" ) ;
        
$this->release_db() ;
        }                
    }
    
  
// Releasing database connection
  
function release_db()
    {
    
// Checking if a conection is open?
    
if ($this->connection) {
      
// Trying to close the connection ...
      
if (mysql_close($this->connection)) {
        
$this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION O.K.: Database " $this->db_name " released" "\r\n" );
      } else {
        
// Failed to liberate the database...
        
$this->error_report() ;
        
$this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" );
        }
    } else {
      
// No database open
      
$this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION CANCELLED: No database open" "\r\n" );
      }
    
// LOG the operation and close logging operations
    
$this->debug() ;
    
$this->logfile_close() ;
    }
    

  
// Error reporting auxiliary method
  
function error_report()
    {
    
$this->error_level mysql_errno() ;
    
$this->error_desc mysql_error() ;
    }

  
// Log operations initialization
  
function logfile_init()
    {      
    if (
$this->debuglv==3) {
         
$this->add_debug_message date("d/m/Y - H:i:s") . " ===== SESSION STARTED BY " $GLOBALS["PHP_SELF"] . " =====" .  "\r\n" );
         
$this->logfile $this->logfile "-" date("m") . "-" date("Y") ;
         
$this->filehdl fopen($this->logfile,'a') ;
         if (!
$this->filehdl) {
                echo 
"<!-- UNABLE TO OPEN SPECIFIED LOG FILE " $this->logfile " -->" ;
                
$this->debuglv-- ;
                
$this->logfile_init() ;
                }
              break ;
      }
    
$this->debug() ;
    }
    
  
// Closing log operations
  
function logfile_close()
    {
    if (
$this->filehdl) {
      
// If we opened a file to log operations need to close it
      
fclose($this->filehdl) ;
      }
    }

  function 
add_debug_message($message)
    {
        
$this->messsages[]=$message;
    }

  
// Debugging operations
  
function debug()
    {
    switch (
$this->debuglv) {
      case 
0// NO LOG OPERATIONS
              
break ;
      case 
1// SCREEN OUTPUT
              
foreach ($this->messsages as $m) {
                echo 
'<BR>DEBUG: ' $m '<BR>' ;
              }  
              break ;
      case 
2// SILENT OUTPUT (<!-- -->)
              
foreach ($this->messsages as $m) {
                echo 
"\n<!-- DEBUG: " $m "-->\n" ;
              }  
              break ;
      case 
3// FILE OUTPUT
              
foreach ($this->messsages as $m) {
                
fwrite($this->filehdl,$this->msg) ;
              }  
              break ;
      }
    }    


  
// Destructor
    
function destroy()
      {
        
$this->release_db() ;
      }
    
      
    
// performes an sqlQuery
    
function query($sqlString)
      {
          
$this->sqlString=$sqlString;
          
$this->query_no++;  
          
        if (
$this->connection !== false) {
          
$this->result mysql_query($sqlString,$this->connection) ;    
          
$this->error_report() ;
          
// Affectected rows...
          
if ($this->result) {
            
// Execution was o.k.          
            
$this->affected_rows mysql_affected_rows$this->connection );
            if (
is_resource($this->result)) {
                
$this->num_rows mysql_num_rows$this->result );
            } else 
$this->num_rows 0;
            
$this->lastid mysql_insert_id$this->connection );
            
$this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION O.K.: Executed [" $this->sqlString ."] [affected " $this->affected_rows " rows] [rows in result " $this->num_rows " ]" "\r\n" );
            return 
true;
          } else {
            
// Execution Failed
            
$this->affected_rows ;      
            
$this->num_rows ;      
            
$this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION FAILED: Executed [" $this->sqlString "] got " $this->error_level " " $this->error_desc "\r\n" );
            return 
false;
            }
        } else {
          
// No database ready to query
          
$this->affected_rows ;
          
$this->num_rows ;
          
$this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION FAILED: No database open OR no SQL command provided" "\r\n"  );
          return 
false;
          }          
      }
      
    function 
fetch_assoc$result false )
       {
            if ( 
$result === false $result $this->result;
        return 
mysql_fetch_assoc$result  );
       }
    
    function 
clean_data($data)
      {
      return 
mysql_real_escape_string($data,$this->connection);    
      }

    function 
fetch_data_array ()
       {
        
$data=array();
        while( 
$row $this->fetch_assoc() )
            { 
$data[]=$row; }
        return 
$data;    
       }

    
// grabs a list of rows from a tabel ... returnes an array of data  
    
function list_table$table_name$where false$parameters = array () )
       {
        
$range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
        
$sortColumn  = ( isset($parameters['sortColumn'])  && !empty($parameters['sortColumn']) )  ? $parameters['sortColumn']  : false ;
        
$sortType    = ( isset($parameters['sortType'])    && !empty($parameters['sortType']) )    ? $parameters['sortType']    : "ASC" ;
        
$limitOffset = ( isset($parameters['limitOffset']) && !empty($parameters['limitOffset']) ) ? $parameters['limitOffset'] : false ;
        
$rowCount    = ( isset($parameters['rowCount'])    && !empty($parameters['rowCount']) )    ? $parameters['rowCount']    : false ;
        
        
$queryString"SELECT $range FROM $table_name ";
        if ( 
$where !== false $queryString .= " WHERE ".$where;
        if ( 
$sortColumn !== false $queryString .= " ORDER BY `$sortColumn$sortType ";        
        if ( 
$rowCount !== false ) {
            
$queryString .= " LIMIT ";
            if ( 
$limitOffset !== false $queryString .= $limitOffset, ";
            
$queryString .= $rowCount ";
        }
        
        
$this->query($queryString);
        if( 
$this->num_rows ) { return false; }
        else { return 
$this->fetch_data_array(); }
      }

    
// fetch a row from a table
    
function fetch_row$table_name$where false $parameters = array () )
      {
      
$range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
      
$range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
                  
        
$queryString"SELECT $range FROM $table_name ";
        if ( 
$where != false $queryString .= " WHERE $where LIMIT 1";

      
$this->query($queryString);    

      if( 
$this->num_rows ) { return false; }
      else { return 
$this->fetch_assoc(); }              
        }

    function 
count_records$table_name$where =false $parameters = array() )
        {                        
        
$queryString"SELECT COUNT(*) as rNumber FROM $table_name ";
        if ( 
$where != false $queryString .= " WHERE $where ";
      if (
$this->query($queryString) == true ){
          
$row=$this->fetch_assoc();
          return 
$row["rNumber"];
      } else return 
false;      
        }
        
    function 
increment_field$table_name$field$where$parameters = array() )
      {
        
$queryString"UPDATE $table_name SET `$field`=`$field`+1  WHERE $where ";
      
$this->query($queryString);               
      }

    function 
record_update$table_name$data$where$parameters = array() )
      {
      
$queryString="UPDATE ".$table_name." SET ";
      
$fields=array();
        
      foreach (
$data as $key=>$value)    {
          
$fields[] = " `$key`='".$this->clean_data$value )."' ";
      }
      
$queryString .= implode(',',$fields)." WHERE ".$where;        
        
      return 
$this->query($queryString);               
      }

    function 
record_insert$table_name$data$parameters = array() )
      {
      
$queryString="INSERT INTO ".$table_name." (";  
      
$columns=array();        
      
$values=array();
      
      foreach (
$data as $key=>$value)
          {
              
$columns []= '`'.$key.'`';
              
$values  []= "'".$this->clean_data$value )."'";
        }      
          
      
$queryString .= implode(',',$columns) .") VALUES ("implode(',',$values) .") ";          
      
      return 
$this->query($queryString);                     
      }
 
    function 
record_delete$table_name$where$parameters = array() )
      {
      
$queryString "DELETE FROM "$table_name ." WHERE "$where;
      
$this->query($queryString);                               
      }      

    function 
table_info($table_name)
      {
       
$this->query(" SELECT * FROM $table_name LIMIT 1");                               
       
$fields mysql_num_fields($this->result);
    
       for (
$i=0$i <= $fields$i++) {
         
$fields[$i]['type'] = mysql_field_type($result$i);
         
$fields[$i]['name'] = mysql_field_name($result$i);
         
$fields[$i]['len']  = mysql_field_len($result$i);
       }
    
    return 
$fields;
    }

   function 
table_max_value$table$field)
     {
     
$this->query(" SELECT max($field) as max_value FROM $table ");
     
$data=$this->fetch_assoc();

     return 
$data["max_value"];
     }
    
}
?>
آموزش استفاده از این کلاس هم بدین صورت هست
کد پی‌اچ‌پی:
<?php

// conection
$mysql= new mysql('localhost' 'userSQL''passwSQL''Selected_DB' );
$mysql->connect();

// fetch row
$row=$mysql->fetch_row'TableName'" id='12' ");
// SELECT * FROM TableName WHERE id='12'

// fetch array of rows
$rows=$mysql->list_table'TableName'" column='3' ", array ('range' => 'id,name') );  
// select id,name from TableName WHERE column='3'
// fetch rows from multiple tables
$rows=$mysql->list_table' TableName1 t1,TableName1 t2 '" t1.column1=t2.column2 ", array ('range' => ' t1.column1_1, t2.column1_2 ') );  


// fetch whole table
$tableList=$mysql->list_table'TableName'false ,  );


// fetch a part of a table - pagination example  
$parameters['limitOffset']=10# Offet Start  
$parameters['rowCount']=10# No of rows returned
$where=" columnName='3' ";
$tableList=$mysql->list_table'TableName'where $parameters );

$data=array('columnName1' => 'value1',
            
'columnName2' => 'value2',
            
'columnName3' => 'value3',        
            );        
// insert data ... it returns true or false
$insertAtempt=$mysql->record_insert('TableName',$data);

// update data
$updateAtempt=$mysql->record_update('TableName',$data," id='3' ");  

    
?>
  پاسخ
تشکر شده توسط : firethumbs
#3
دوست عزيزم
خيلي از لطفت ممنون . مي شه در مورد اين كد يه توضيح كوچكي بدي كه چطور كار مي كنه. چون پروژه دانشگاهي است بايد ازش سر در بياورم تا بتوانم پروژه را كامل انجام دهم. و سوال ديگه اينكه كدهاي خودم چه اشكالي دارند؟ آيا نمي تونم از ارث بري استفاده كنم و كلاس mysqli را extends كنم و از توابع آن استفاده كنم؟
(۱۳۸۸ آذر ۲۰, ۱۱:۳۸ ق.ظ)hidensfot نوشته: وقتی حرف برنامه نویس حرفه ای میاد وسط پاسخ دادن خیلی سخت می شه ، دوست عزیز من حرفه ای نیستم اما می تونید از این کلاسی که براتون میگزارم استفاده کنید

کد پی‌اچ‌پی:
<?php

class mysql {

    
// Database server information
    
var $host;                 // (string)  Host server of database
    
var $user;                 // (string)  User
    
var $password;             // (string)  Password
    
var $db_name;              // (string)  Database that will be selected
    
var $port;                 // (int)     Server port
    
var $connection false;   // (link identifier)   MySQL connection link identifier
    
var $result;               // (link identifier)   MySQL result link identifier
    
    // Class operation setup
    
    
    // 0 LOG_NONE
    // 1 ECHO
    // 2 HIDDEN ECHO
    // 3 LOG FILE
    
var $debuglv  ;
    var 
$error_level  ;
    var 
$error_desc   "No errors" ;
    var 
$logfile      "datalog" ;
    var 
$filehdl      ;
    var 
$messsages    = array() ;  
      
    var 
$affected_rows ;    
    var 
$num_rows      ;    
    var 
$recordcount   ;    
    var 
$lastid        ;
    var 
$sqlString;
    
    var 
$query_no     ;    



    function 
mysql($host ""$user ""$password ""$db_name ""$port "")
    {
        
$this->host     = ( !empty( $host ) )      ?  (string)$host      :  "localhost";
        
$this->user     = ( !empty( $user ) )      ?  (string)$user      :  "root";
        
$this->password = ( !empty( $password ) )  ?  (string)$password  :  "";
        
$this->db_name  = ( !empty( $db_name ) )   ?  (string)$db_name   :  "";
        
$this->port     = ( !empty( $port ) )      ?  (int)$port         :  3306;
    }




    function 
connect($is_persistent false)
    {                
        
$this->logfile_init() ;

        if (!
$is_persistent) {
            
$this->connection = @mysql_connect($this->host.':'.$this->port$this->user$this->password);
        } else {
            
$this->connection = @mysql_pconnect($this->host.':'.$this->port$this->user$this->password);
        }
        
$this->error_report() ;
        
        if (!
$this->connection) {
          
// Conection failed
          
$this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" ) ;          
          
$this->release_db() ;
        } else { 
$this->select_db(); }        
    }

    function  
select_db($db_name=false){
         if (
$db_name !== false$this->db_name=$db_name;
        
      
// Select a database...
      
if (@mysql_select_db($this->db_name,$this->connection)) {
        
// Selecting Database OK
        
$this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION O.K.: Connected to database " $this->db_name .  "\r\n" );
      } else {
        
// Failed to select the database... abort connection process
        
$this->error_report() ;
        
$this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" ) ;
        
$this->release_db() ;
        }                
    }
    
  
// Releasing database connection
  
function release_db()
    {
    
// Checking if a conection is open?
    
if ($this->connection) {
      
// Trying to close the connection ...
      
if (mysql_close($this->connection)) {
        
$this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION O.K.: Database " $this->db_name " released" "\r\n" );
      } else {
        
// Failed to liberate the database...
        
$this->error_report() ;
        
$this->add_debug_message date("d/m/Y - H:i:s") . " - ERROR " $this->error_level ": " $this->error_desc "\r\n" );
        }
    } else {
      
// No database open
      
$this->add_debug_message date("d/m/Y - H:i:s") . " - OPERATION CANCELLED: No database open" "\r\n" );
      }
    
// LOG the operation and close logging operations
    
$this->debug() ;
    
$this->logfile_close() ;
    }
    

  
// Error reporting auxiliary method
  
function error_report()
    {
    
$this->error_level mysql_errno() ;
    
$this->error_desc mysql_error() ;
    }

  
// Log operations initialization
  
function logfile_init()
    {      
    if (
$this->debuglv==3) {
         
$this->add_debug_message date("d/m/Y - H:i:s") . " ===== SESSION STARTED BY " $GLOBALS["PHP_SELF"] . " =====" .  "\r\n" );
         
$this->logfile $this->logfile "-" date("m") . "-" date("Y") ;
         
$this->filehdl fopen($this->logfile,'a') ;
         if (!
$this->filehdl) {
                echo 
"<!-- UNABLE TO OPEN SPECIFIED LOG FILE " $this->logfile " -->" ;
                
$this->debuglv-- ;
                
$this->logfile_init() ;
                }
              break ;
      }
    
$this->debug() ;
    }
    
  
// Closing log operations
  
function logfile_close()
    {
    if (
$this->filehdl) {
      
// If we opened a file to log operations need to close it
      
fclose($this->filehdl) ;
      }
    }

  function 
add_debug_message($message)
    {
        
$this->messsages[]=$message;
    }

  
// Debugging operations
  
function debug()
    {
    switch (
$this->debuglv) {
      case 
0// NO LOG OPERATIONS
              
break ;
      case 
1// SCREEN OUTPUT
              
foreach ($this->messsages as $m) {
                echo 
'<BR>DEBUG: ' $m '<BR>' ;
              }  
              break ;
      case 
2// SILENT OUTPUT (<!-- -->)
              
foreach ($this->messsages as $m) {
                echo 
"\n<!-- DEBUG: " $m "-->\n" ;
              }  
              break ;
      case 
3// FILE OUTPUT
              
foreach ($this->messsages as $m) {
                
fwrite($this->filehdl,$this->msg) ;
              }  
              break ;
      }
    }    


  
// Destructor
    
function destroy()
      {
        
$this->release_db() ;
      }
    
      
    
// performes an sqlQuery
    
function query($sqlString)
      {
          
$this->sqlString=$sqlString;
          
$this->query_no++;  
          
        if (
$this->connection !== false) {
          
$this->result mysql_query($sqlString,$this->connection) ;    
          
$this->error_report() ;
          
// Affectected rows...
          
if ($this->result) {
            
// Execution was o.k.          
            
$this->affected_rows mysql_affected_rows$this->connection );
            if (
is_resource($this->result)) {
                
$this->num_rows mysql_num_rows$this->result );
            } else 
$this->num_rows 0;
            
$this->lastid mysql_insert_id$this->connection );
            
$this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION O.K.: Executed [" $this->sqlString ."] [affected " $this->affected_rows " rows] [rows in result " $this->num_rows " ]" "\r\n" );
            return 
true;
          } else {
            
// Execution Failed
            
$this->affected_rows ;      
            
$this->num_rows ;      
            
$this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION FAILED: Executed [" $this->sqlString "] got " $this->error_level " " $this->error_desc "\r\n" );
            return 
false;
            }
        } else {
          
// No database ready to query
          
$this->affected_rows ;
          
$this->num_rows ;
          
$this->add_debug_messagedate("d/m/Y - H:i:s") . " - OPERATION FAILED: No database open OR no SQL command provided" "\r\n"  );
          return 
false;
          }          
      }
      
    function 
fetch_assoc$result false )
       {
            if ( 
$result === false $result $this->result;
        return 
mysql_fetch_assoc$result  );
       }
    
    function 
clean_data($data)
      {
      return 
mysql_real_escape_string($data,$this->connection);    
      }

    function 
fetch_data_array ()
       {
        
$data=array();
        while( 
$row $this->fetch_assoc() )
            { 
$data[]=$row; }
        return 
$data;    
       }

    
// grabs a list of rows from a tabel ... returnes an array of data  
    
function list_table$table_name$where false$parameters = array () )
       {
        
$range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
        
$sortColumn  = ( isset($parameters['sortColumn'])  && !empty($parameters['sortColumn']) )  ? $parameters['sortColumn']  : false ;
        
$sortType    = ( isset($parameters['sortType'])    && !empty($parameters['sortType']) )    ? $parameters['sortType']    : "ASC" ;
        
$limitOffset = ( isset($parameters['limitOffset']) && !empty($parameters['limitOffset']) ) ? $parameters['limitOffset'] : false ;
        
$rowCount    = ( isset($parameters['rowCount'])    && !empty($parameters['rowCount']) )    ? $parameters['rowCount']    : false ;
        
        
$queryString"SELECT $range FROM $table_name ";
        if ( 
$where !== false $queryString .= " WHERE ".$where;
        if ( 
$sortColumn !== false $queryString .= " ORDER BY `$sortColumn$sortType ";        
        if ( 
$rowCount !== false ) {
            
$queryString .= " LIMIT ";
            if ( 
$limitOffset !== false $queryString .= $limitOffset, ";
            
$queryString .= $rowCount ";
        }
        
        
$this->query($queryString);
        if( 
$this->num_rows ) { return false; }
        else { return 
$this->fetch_data_array(); }
      }

    
// fetch a row from a table
    
function fetch_row$table_name$where false $parameters = array () )
      {
      
$range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
      
$range       = ( isset($parameters['range'])       && !empty($parameters['range']) )       ? $parameters['range']       : " * " ;
                  
        
$queryString"SELECT $range FROM $table_name ";
        if ( 
$where != false $queryString .= " WHERE $where LIMIT 1";

      
$this->query($queryString);    

      if( 
$this->num_rows ) { return false; }
      else { return 
$this->fetch_assoc(); }              
        }

    function 
count_records$table_name$where =false $parameters = array() )
        {                        
        
$queryString"SELECT COUNT(*) as rNumber FROM $table_name ";
        if ( 
$where != false $queryString .= " WHERE $where ";
      if (
$this->query($queryString) == true ){
          
$row=$this->fetch_assoc();
          return 
$row["rNumber"];
      } else return 
false;      
        }
        
    function 
increment_field$table_name$field$where$parameters = array() )
      {
        
$queryString"UPDATE $table_name SET `$field`=`$field`+1  WHERE $where ";
      
$this->query($queryString);               
      }

    function 
record_update$table_name$data$where$parameters = array() )
      {
      
$queryString="UPDATE ".$table_name." SET ";
      
$fields=array();
        
      foreach (
$data as $key=>$value)    {
          
$fields[] = " `$key`='".$this->clean_data$value )."' ";
      }
      
$queryString .= implode(',',$fields)." WHERE ".$where;        
        
      return 
$this->query($queryString);               
      }

    function 
record_insert$table_name$data$parameters = array() )
      {
      
$queryString="INSERT INTO ".$table_name." (";  
      
$columns=array();        
      
$values=array();
      
      foreach (
$data as $key=>$value)
          {
              
$columns []= '`'.$key.'`';
              
$values  []= "'".$this->clean_data$value )."'";
        }      
          
      
$queryString .= implode(',',$columns) .") VALUES ("implode(',',$values) .") ";          
      
      return 
$this->query($queryString);                     
      }
 
    function 
record_delete$table_name$where$parameters = array() )
      {
      
$queryString "DELETE FROM "$table_name ." WHERE "$where;
      
$this->query($queryString);                               
      }      

    function 
table_info($table_name)
      {
       
$this->query(" SELECT * FROM $table_name LIMIT 1");                               
       
$fields mysql_num_fields($this->result);
    
       for (
$i=0$i <= $fields$i++) {
         
$fields[$i]['type'] = mysql_field_type($result$i);
         
$fields[$i]['name'] = mysql_field_name($result$i);
         
$fields[$i]['len']  = mysql_field_len($result$i);
       }
    
    return 
$fields;
    }

   function 
table_max_value$table$field)
     {
     
$this->query(" SELECT max($field) as max_value FROM $table ");
     
$data=$this->fetch_assoc();

     return 
$data["max_value"];
     }
    
}
?>
آموزش استفاده از این کلاس هم بدین صورت هست
کد پی‌اچ‌پی:
<?php

// conection
$mysql= new mysql('localhost' 'userSQL''passwSQL''Selected_DB' );
$mysql->connect();

// fetch row
$row=$mysql->fetch_row'TableName'" id='12' ");
// SELECT * FROM TableName WHERE id='12'

// fetch array of rows
$rows=$mysql->list_table'TableName'" column='3' ", array ('range' => 'id,name') );  
// select id,name from TableName WHERE column='3'
// fetch rows from multiple tables
$rows=$mysql->list_table' TableName1 t1,TableName1 t2 '" t1.column1=t2.column2 ", array ('range' => ' t1.column1_1, t2.column1_2 ') );  


// fetch whole table
$tableList=$mysql->list_table'TableName'false ,  );


// fetch a part of a table - pagination example  
$parameters['limitOffset']=10# Offet Start  
$parameters['rowCount']=10# No of rows returned
$where=" columnName='3' ";
$tableList=$mysql->list_table'TableName'where $parameters );

$data=array('columnName1' => 'value1',
            
'columnName2' => 'value2',
            
'columnName3' => 'value3',        
            );        
// insert data ... it returns true or false
$insertAtempt=$mysql->record_insert('TableName',$data);

// update data
$updateAtempt=$mysql->record_update('TableName',$data," id='3' ");  

    
?>

دوست عزيزم
خيلي از لطفت ممنون . مي شه در مورد اين كد يه توضيح كوچكي بدي كه چطور كار مي كنه. چون پروژه دانشگاهي است بايد ازش سر در بياورم تا بتوانم پروژه را كامل انجام دهم. و سوال ديگه اينكه كدهاي خودم چه اشكالي دارند؟ آيا نمي تونم از ارث بري استفاده كنم و كلاس mysqli را extends كنم و از توابع آن استفاده كنم؟
من يك مثال از ارث بري از اين كلاس در اينجا ديدم. مي خوام به اين صورت يك كلاس بنويسم ولي نمي دونم كه چطور بايد از متدهاي عضو كلاس پدر استفاده كنم
  پاسخ
تشکر شده توسط :
#4
کدتون درسته به جز این قسمت
کد پی‌اچ‌پی:
$mysqli.close(); 
که باید بشه
کد پی‌اچ‌پی:
$this->mysqli->close(); 

در مورد اون اخطار هم شما بعد از اینکه یه کویری رو میفرستین حتما بعدش چک کنین که mysql اخطاری نداده باشه. مثل همون کاری که واسه connect شدن می کنین
  پاسخ
تشکر شده توسط :
#5
(۱۳۸۸ آذر ۲۰, ۰۳:۴۲ ب.ظ)admin نوشته: کدتون درسته به جز این قسمت
کد پی‌اچ‌پی:
$mysqli.close(); 
که باید بشه
کد پی‌اچ‌پی:
$this->mysqli->close(); 

در مورد اون اخطار هم شما بعد از اینکه یه کویری رو میفرستین حتما بعدش چک کنین که mysql اخطاری نداده باشه. مثل همون کاری که واسه connect شدن می کنین
دوست عزيز سلام
خوب اگه كدم درسته چرا خطا مي ده؟ صدا زدن تابع excute_query باعث خطا مي شه. چرا؟
  پاسخ
تشکر شده توسط :
#6
گفتم که query که‌ میفرستین مشکل داره.
شما بعد از اینکه یه کويری رو با‌متد‌ query می‌فرستین‌ باید‌ چک کنین mysql اخطاری‌ داده یا نه
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان