php - 需要从表中获取最后 4 行,但没有得到任何结果

标签 php mysql

我对 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/

相关文章:

php - Mysqli 最后插入 id 不起作用

php - 使用php和mysql上传图片

mysql - 在mysql中获取时间间隔

php - 上传图像并将其与数据库中的行相关联

php - Apache Mod_Rewrite 不断重定向

php - 将属性添加到与 Doctrine 的 QueryBuilder 关联的子实体

php - 处理状态困境

php - 按符号计算余额

php - 创建一个带有空白方 block 的表,用于丢失 mysql 数据

php - 如何在php中测试一个调度程序