【问题标题】:MySQL fetch multiple values with one query and turn them into printable variablesMySQL 一次查询获取多个值并将它们转换为可打印的变量
【发布时间】:2014-07-22 18:20:03
【问题描述】:

我有一个关于简化我的 PHP 代码的问题。

我正在为网上商店构建产品选择模块。我想从名为“BestProducts”的表中获取前 3 行中某些列的值。

假设我想知道表格中第一个、第二个和第三个产品的产品价格。 以我目前掌握的 PHP 技能,我会查询数据库 3 次,分别获取三个产品的产品价格。查询后,我会将对象的结果转换为可打印的变量(也可以单独)。

我确信必须有一种更高效、更省时/性能消耗的方法来获取这三个价格并将它们转换为可打印的变量,以便我可以在我的网页上显示价格。

我认为我应该只使用一个查询来获取三个产品价格,然后将此查询提取到三个单独的变量中。但是,我不知道如何准确地做到这一点。非常感谢您的帮助!

【问题讨论】:

  • 听起来您需要在两个表之间进行 JOIN。

标签: php mysql arrays object


【解决方案1】:

您可以使用 LIMIT 来限制您的查询将输出的结果数量,试试这样的方法

SELECT * FROM yourtable LIMIT 0,3  ORDER BY somecolumn

这个结果会输出按指定列排序的表的前3个结果,然后循环获取,可能使用这个

http://php.net/manual/en/function.mysql-fetch-array.php

【讨论】:

    【解决方案2】:

    如果我理解正确,您想要获取 BestProducts 表的前 3 行,为此您可以进行如下查询:

    $query = "SELECT your_column1, your_column2, your_columnN FROM BestProduct ORDER BY your_criteria DESC LIMIT 3;
    

    我假设您已经与数据库建立了连接,所以下一步是执行查询并迭代结果

    if ($result = $mysqli->query($query)) {
    
         /* to get the associative array */
         while ($row = $result->fetch_assoc()) {
               printf ("%s (%s)\n", $row["your_column1"], $row["your_column2"]);
         }
         /* free the result set*/
         $result->free();
    }
    

    参考:http://www.php.net/manual/es/mysqli-result.fetch-assoc.php

    【讨论】:

    • 如果您没有与数据库建立连接,只需在 if 前添加 $mysqli = new mysqli("localhost", "my_user", "my_password", "my_database");
    • 非常感谢!现在如何从数组中打印某个值?假设我想从“ProductPrice”列中获得第二个值。如何从数组中选择它并将其分配给变量?
    • fetch_assoc() 返回的是你当前所在行的数组。因此,要从 ProductPrice 中获取值,您需要在 while $productPrice = $row['ProductPrice']; 内执行此操作现在要获取第二个值,您可以更改查询以获取所需的特定值或添加类似 $counter = 0; while( .....) { //code if ($counter++ == 1){ //do something } 的计数器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 2015-10-28
    • 2018-05-17
    相关资源
    最近更新 更多