我有这样的代码,工作得很好。
if (array_key_exists('cat', $_GET) === TRUE) {
$category = $_GET['cat'];
} else {
$category = '.*';
}
$conn = new PDO('mysql:host=localhost;dbname=news', 'root', '');
$stmt = $conn->prepare('SELECT * FROM stories
WHERE category RLIKE :cat
ORDER BY score DESC LIMIT 0, 25');
$stmt -> execute(array(
'cat' => $category,
));
$result = $stmt->fetchAll();
如您所见,它从获取请求中获取一个类别,并在数据库中搜索该类别中的所有内容。
我也试图添加一点,这样就可以在get请求中定义一个页面,并且查询将在稍后的页面中每增加一个,开始25行。
这是我写的:
if (array_key_exists('cat', $_GET) === TRUE) {
$category = $_GET['cat'];
} else {
$category = '.*';
}
if (array_key_exists('page', $_GET) === TRUE) {
$page = intval($_GET['page'])*25;
} else {
$page = 0;
}
$conn = new PDO('mysql:host=localhost;dbname=news', 'root', '');
$stmt = $conn->prepare('SELECT * FROM stories
WHERE category RLIKE :cat
ORDER BY score DESC LIMIT :page, 25');
$stmt -> execute(array(
'cat' => $category,
'page' => $page
));
$result = $stmt->fetchAll();
但现在,该查询返回什么,不管什么页面,或者还有一类。
也许我没有处理整数正确。任何想法,为什么我得到这个结果?
你能值传递给PDO一样,如果它不是一个字符串? (没有与PDO经验) –
也许不是。我也没有经验。我希望有一些方法可以将int放入查询中。 – user1624005
也http://stackoverflow.com/questions/5508993/pdo-limit-and-offset和其他人。询问前请尝试使用右上角的搜索功能。 – kapa