30/09/2018, 16:53
[PHP_ERROR] Undefined variable: mysqli
Mình có đoạn code:
public static function GetDataOnePage( $START, $PAGESIZE)
{
require_once ("./config/dbconnect.php");
$mysqli->query("SET NAMES utf8");
$query = "SELECT * FROM car LIMIT $START, $PAGESIZE";
$result = $mysqli->query($query);
$dsxe = array();
if ($result) {
foreach ($result as $row) {
$xe = new carModel();
$xe->CID = $row["CID"];
$xe->ModelID = $row["ModelID"];
$xe->Status = $row["Status"];
$xe->StartDate = $row["StartDate"];
$xe->HolderID = $row["HolderID"];
$xe->RentalPrice = $row["RentalPrice"];
$dsxe[] = $xe;
}
}
$mysqli->close();
return $dsxe;
}
public static function CountRow()
{
require_once("./config/dbconnect.php");
$mysqli->query("SET NAMES utf8");
$query = "SELECT COUNT(*) AS N FROM car";
$result = $mysqli->query($query);
$NUMROW = $result->N;
$mysqli->close();
return $NUMROW;
}
Lúc gọi đến hàm CountRow() thì bị báo lỗi ở dòng 187: $mysqli->query(“SET NAMES utf8”);
Mong mọi người sửa giúp. Cảm ơn!
Bài liên quan
$mysqli khai báo ở đâu mà gọi nó ra vô duyên thế???
Trong file dbconfig.php, em có require trong mỗi hàm
require, include để ngay ở những dòng đầu tiên của file, ko đặt trong hàm.
Đó là quy ước trong PHP luôn à ah. Tại em đang học UWDPT coi file demo của thầy, thầy vẫn đặt trong hàm.
Mà sửa lại thì bị lỗi khi thực hiện truy vấn: $result = $mysqli->query($query);
Nó báo là: Undefined variable: mysqli
Vẫn chưa xác định được biến mysqli. trong khi đó đã require ở trên đầu để gọi tới nó rồi mà ta (Truyền từ file config qua file car.php ở model biến mysqli )
trong file dbconnect.php thêm 1 dòng ở cuối :
public $mysqli;
nhin nhầm sory bạn nha
oh @thangngoc89 tại sao lại thêm public vào, mình thử thêm nó thông báo lỗi systax ngay chỗ
public $mysqli;
.Nếu mình chỉ gọi 1 hàm, ví dụ như gọi hàm
public static function GetDataOnePage( $START, $PAGESIZE)
thì không báo lỗi, nhưng gọi thêm 1 hàm sau đópublic static function CountRow()
thì báo lỗi như trên. Nó báo hàm 2 không hiểu $mysqli. Ở đây làm kết nối theo OOP:Mình đoán lỗi là do gọi require_once lần 2. *_once có nghĩa là chỉ load file đó 1 lần, nếu check tồn tại thì không load. nên gọi hàm CountRow sẽ không có biến mysqli.
Bạn không nên xây dựng như vậy. file config/dbconnect.php hãy viết ở dạng hàm và require_once 1 lần ở đầu file php. Sau đó chỉ cần gọi hàm getConnection() hoặc getMysqli() chẳng hạn để lấy về đối tượng mysqli.
Cảm ơn @manhapt nhé. Bị sai chỗ require vs require_once
Sorry mình nhầm. Lâu rồi nên quên. Cái đó phải là
global $mysqli
. bạn phải đem biến vào func thì mới gọi được.