我对 PHP 很陌生,我正在尝试从产品表中获取最后 4 行...但是我没有得到任何类型的结果:(
我不太确定我做错了什么,我尝试使用 for 循环每次在命名参数中更改 prod_id
但不知何故它不会带来任何结果,任何人都可以告诉我我做错了什么?
$db = new PDO($dsn, $username, $password);
for ($prod_id = 4; $prod_id<=8 ; $prod_id++)
{
$query2 = "SELECT p_type, p_name FROM `products` WHERE prod_id = :prod_id ";
$prod = $db->prepare($query2);
$prod->bindValue(':prod', $prod);
$prod->execute();
$detail=$prod->fetch();
}
foreach($prod as $result)
{
echo $result['p_type'] . ' ';
echo $result['p_name'] . ' <br />';
}
最佳答案
使用 mysql 时,有一个简单的解决方案可以让数据库执行此操作:
SELECT p_type, p_name FROM `products` WHERE prod_id = :prod_id LIMIT 0, 4
但这需要先订购条目,否则您将获得一些产品。这也可以由数据库通过添加来完成
ORDER BY ...
将三个点替换为您要用于排序的列的名称。
另一件事是,您执行 5 个 SELECT,但您可以使用 BETWEEN 一次获取所有条目:
$db = new PDO($dsn, $username, $password);
$query2 = "SELECT p_type, p_name FROM `products` WHERE prod_id BETWEEN :from and :to ORDER BY id desc LIMIT 4";
$prod = $db->prepare($query2);
$prod->bindValue(':from', 4);
$prod->bindValue(':to', 8);
$prod->execute();
$detail=$prod->fetch();
foreach($prod as $result) {
echo $result['p_type'] . ' ';
echo $result['p_name'] . ' <br />';
}
这提高了性能并降低了复杂性。
关于php - 需要从表中获取最后 4 行,但没有得到任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37022114/