2017-11-01 11 views
0

を取得しようと、私は私のDBに以下のデータのいくつかの行の持っている間問題を「選択」:mysqlの最小値

name price 
iphone 1000 
iphone 888 
iphone 1010 

を私はiPhoneのために最も安い価格を取得しようとしていますが、私のスクリプトが返されます最も高価な1

class getdbdata { 

    function cheapestprice($nameofproduct) { 

     $servername = "localhost"; 
     $username = "username"; 
     $password = "password"; 
     $dbname = "mobilephones"; 
     $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, 
     $password); 
     $sql = ("SELECT name,price FROM phones where name like 
     '%".$nameofproduct."%' and price =(SELECT MIN(price) FROM phones)"); 
     $stmt = $pdo->prepare($sql); 
     $stmt->execute() ; 
     $posts= $stmt->fetch() ; 
      foreach ($posts as $post) { 
     echo $post; 
      } 
      var_dump($posts); 
    } 

} 

$getdbdata = new getdbdata(); 
$getdbdata->cheapestprice("iphone"); 
+0

。代わりに 'SELECT name、MIN(price)FROM phones WHERE name like:name GROUP BY name'を使用することができます。 – jeroen

+2

これは、データベースのカラム "price"のタイプに関するものです... varcharではなくdoubleまたはfloatであることを確認してください。 –

答えて

0

変更への問合せ:あなたは、サブ選択を必要としませんが、あなたはそれを使用する場合、あなたにも `WHERE`を追加する必要があると思い

SELECT name, Min(price) FROM phones where name like '%".$nameofproduct."%'