01/10/2018, 00:43
Tại sao cách làm tương tự nhau lại cho ra kết quả khác nhau?
/*Cách 1*/
$db= new PDO("mysql:host=localhost;dbname=name", 'root', ');
//$db->query('set names "utf8"');
$var1 = 1;
$var2 = 2;
$sql = "SELECT * FROM theloai LIMIT ?,?";
$cursor = $db->prepare($sql);
$cursor->bindParam(1,$var1);
$cursor->bindParam(2,$var2);
$cursor->execute();
echo "<br>";
print_r($cursor->fetchAll());
echo "<br>";
/* Cách 2*/
$db= new PDO("mysql:host=localhost;dbname=name", 'root', ');
//$db->query('set names "utf8"');
$var1 = 1;
$var2 = 2;
$sql = "SELECT * FROM theloai LIMIT $var1,$var2";
$cursor = $db->prepare($sql);
$cursor->execute();
echo "<br>";
print_r($cursor->fetchAll());
echo "<br>";
Mọi người giúp mình giải quyết vấn đề này với. Hai cách mình làm tương tự nhau mà mình không hiểu tại sao lại cho ra 2 kết quả khác nhau. Cách 1 là chạy ra kết quả không mong muốn. Cách 2 thì chạy đúng.
Bảng theloai của mình:
CREATE TABLE
theloai
(
id
int(11) NOT NULL,
tentheloai
varchar(100) NOT NULL,
theloai_id
int(11) NOT NULL,
created_at
date NOT NULL,
updated_at
date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Bài liên quan
Nếu mình nhớ không nhầm thì bindParam sẽ mặc định là PDO::PARAM_STR nên câu lệnh ở 1 sẽ là
Bạn thử var_dump cái $cursor ra xem thế nào? (mình không có máy test)
chính xác là thế rồi
Đúng rồi á bạn. Mình có test lại và tìm ra vấn đề rồi. Mình cảm ơn nha.