0

PDO 接続を使用して SQL レコードの最小値を見つけようとしています。レコードは varchar であるため、最小を見つけるために int に変換する必要があります。私はこの問題で立ち往生しています:

mysql_fetch_assoc() expects parameter 1 to be resource, array given

問題は、PDO 接続からリソースを取得する方法がわからないことです。クエリは有効です。

<?php

//load and connect
require("config.inc.php");

        //change varcar to ints and put into array
        $query = "SELECT score FROM easy";
        $stmt   = $db->prepare($query);
        $result = $stmt->execute();
        $rows = $stmt->fetchAll();
        $scoreArray = array();

        $index = 0;
            while($row = mysql_fetch_assoc($rows)){
             $scoreArray[$index] = intval($row);
             $index++;
        }
        $smallest = min($scoreArray);

        $response["success"] = 0;
        $response["message"] = "The min is: ".$smallest;
        echo(json_encode($response));

?>
4

2 に答える 2

3
  1. フィールドを int に変換する必要があります。
  2. SQL を使用して最小値を見つけます。

    SELECT min(score) FROM easy
    

データベースからすべてのレコードを選択してPHPで処理することはできません。それは非常に基本的な原則に反しています。データマイニングはデータベースの仕事です。

    $query = "SELECT min(score) FROM easy";
    $stmt   = $db->prepare($query);
    $result = $stmt->execute();
    $min    = $stmt->fetchColumn();
于 2013-10-25T05:35:10.057 に答える
-1

mysql_fetch_assocPDO を使用する場合は使用しないでください:

交換

while($row = mysql_fetch_assoc($rows)){

foreach ( $rows as $row ){
于 2013-10-25T05:36:22.030 に答える