5

私のテーブルには を含む 2 つのレコードがありますcompanyid = 1が、以下の php を実行するとcompanyid = 1、最初のレコードのみが返されます。
すべてのレコードを取得するにはどうすればよいですか?

php ファイル:

if (isset($_GET["companyid"])) {
$companyid = $_GET['companyid'];

// get a product from products table
$result = mysql_query("SELECT * FROM `products`         
                        WHERE companyid = $companyid;");

if (!empty($result)) {      

    if (mysql_num_rows($result) > 0) {

   while($row = mysql_fetch_assoc($result)){
      $product = array();
      $product["pid"] = $row["pid"];
      $product["productname"] = $row["productname"];        
    }

   $response["product"] = array();

       array_push($response["product"], $product);

        // success
       $response["success"] = 1;

   echo json_encode($response);

    } else {
        // no product found
        $response["success"] = 0;
        $response["message"] = "No product found";

        // echo no product JSON
        echo json_encode($response);
    }
} else {
    // no product found
    $response["success"] = 0;
    $response["message"] = "No product found";

    // echo no users JSON
    echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";

// echoing JSON response
echo json_encode($response);
}

使用しmysql_fetch_arrayても同じことが起こっています。それを使用して{"product":[{"pid":"12371","productname":"test"}],"success":1} パラメーターなしでクエリを実行すると、すべての行が返されます.. select * from tablemysql_fetch_array

4

4 に答える 4

34

NikiC が指摘したように、mysql_ 関数はもう使用しないでください。PDO と mysqli の両方で配列全体をフェッチできます。mysqli->fetch_all関数を使用してすべての行をフェッチする例を次に示します。これが役立つことを願っています!

//Database Connection
$sqlConn =  new mysqli($hostname, $username, $password, $database);

//Build SQL String
$sqlString = "SELECT * FROM my_table";

//Execute the query and put data into a result
$result = $sqlConn->query($sqlString);

//Copy result into a associative array
$resultArray = $result->fetch_all(MYSQLI_ASSOC);

//Copy result into a numeric array
$resultArray = $result->fetch_all(MYSQLI_NUM);

//Copy result into both a associative and numeric array
$resultArray = $result->fetch_all(MYSQLI_BOTH);
于 2013-03-18T18:54:23.313 に答える
8
while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}

mysql_free_result($result);

php.net/mysql_fetch_assoc

mysql_ の代わりに PDO を使用することをお勧めします。

if (!empty($result)) {

になり得るis_resource($result)

于 2012-06-07T21:50:18.463 に答える
4

すべての行をプルするには、結果をループする必要があります。

while($row = mysql_fetch_assoc($result)){
//Do stuff 
}

ちなみに、mysql_* 関数の代わりに、少なくとも mysqli または PDO を使用する必要があります。

于 2012-06-07T21:48:46.257 に答える