

以下のような関数があるのですが、この中のコードに関して２点質問します。

1.「 ORDER BY `order`");」とはどういう意味ですか？

2.「while ($row = $results->fetch(PDO::FETCH_ASSOC)) {  
$product["sizes"][] = $row["size"];  
}」はどういう意味ですか？

* * *
[code]

    function get_product_single($sku){
        require(ROOT_PATH. "inc/database.php");
        try{
            $results=$db->prepare("SELECT name, price, img, sku,paypal FROM products where sku=?");
            $results->bindParam(1,$sku);
            $results->execute();
        }catch (Exception $e){
          echo "Data could not be retrieved from the database.";
          exit;
        }
    
        $product=$results->fetch(PDO::FETCH_ASSOC);
        if ($product===false)return $product;
        $product["sizes"]=array();
        try{
            $results=$db->prepare("
            SELECT size
            FROM products_sizes ps 
            INNER JOIN sizes s ON ps.size_id=s.id
            WHERE product_sku=?
            ORDER BY `order`");
            $results->bindParam(1,$sku);
            $results->execute();
        } catch (Exception $e) {
            echo "Data could not be retrieved from the database.";
            exit;
        }
        while ($row = $results->fetch(PDO::FETCH_ASSOC)) {
            $product["sizes"][] = $row["size"];
        }
    
        return $product;
    }
    
[/code]


CC BY-SA 3.0
2016-07-20T13:32:51.890
27764
2016-07-20T17:05:58.250
2016-07-20T14:09:17.520
13199
10465
question
php
phpのコードについて質問します。


利用されているのはMySQLですよね？

  1. カラム order でソートするという意味です。  
order はMySQLの予約語ですので、SQL中でカラム名として使う場合は `（バッククオート）で囲む必要があります。  
<https://dev.mysql.com/doc/refman/5.6/ja/reserved-words.html>

  2. SQLの結果をすべて、配列 $product["sizes"] へ追加しています。  
$results->fetch(PDO::FETCH_ASSOC) についてはマニュアルが参考になります。  
<http://php.net/manual/ja/pdostatement.fetch.php>


CC BY-SA 3.0
2016-07-20T17:05:58.250
27769
2016-07-20T17:05:58.250
15228
27764
answer