2015-04-02 79 views
0

我已經使用(MySQLi程序)將我的php分成2/3個部分: 首先是致力於數據庫(打開,執行,總行,受影響的行,關閉..) 其次是致力於其他功能。 下面是一個例子:警告:mysqli_num_rows()期望參數1是mysqli_result,對象給出

db.php中(一)

<?php 
class DB { 
var $DBUser = 'myuser'; 
var $DBPass = 'mypassword'; 
var $DBServer = 'localhost'; 
var $DBName = 'myDB'; 
var $con; 

function __construct() { 
    $testcon = mysqli_connect($this->DBServer, $this->DBUser, $this->DBPass,$this->DBName);        

    if (!$testcon) { 
     die('Database connection failed: ' . mysqli_connect_error()); 
    } else { 
     $this->con = $testcon; 
    } 
} 

function Qry($sql) { 
    if($result = mysqli_query($this->con,$sql)) { 
     return $result; 
    } 
    else 
    { 
     $err = "Error: ".$sql. " :: ". mysqli_error; 
     die("$err"); 
    } 
} 

function TotRows($result) { 
    if($result === false) 
    { 
     die("Error ".mysqli_error); 
    } 
    else return mysqli_num_rows($result); 
} 

function AffRows($result) { 
    return mysqli_affected_rows($result); 
} 

function LastRow($tblName) { 
    return mysqli_insert_id($this->con); 
} 


function close() { 
    mysqli_close($this->con); 
} 

} 
?> 

和 的functions.php(二)

public function GetBoolResult($db,$sql) { 
     $result=$db->Qry($sql); 
     $no_of_rows = $db->TotRows($db->con); 

     if ($no_of_rows > 0) { 
      // user exist 
      return true; 
     } else { 
      // user does not exist 
      return false; 
     } 
} 

當我嘗試執行我得到了以下警告腳本錯誤:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, object given in db.php

如果你看這個函數來獲取行數,參數是在函數內部測試的,那麼sql語句已經直接在mysql服務器上測試過了,沒有任何錯誤。

任何想法是什麼問題?

回答

1

不要你wan't的結果通過,而不是連接

$result = $db->Qry($sql); 
$no_of_rows = $db->TotRows($result); 
+0

我明白了,非常感謝 – koul 2015-04-02 13:08:11

相關問題