-1

selectステートメントを作成すると、データベースに最後に挿入された行が常に返されます。問題は何ですか、どうすれば修正できますか?

重要な注意:私の友人は同じコードを取りました、そしてそれは彼女のためにきちんと働きました!

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

    // get a product from products table
    //)or die(mysql_error()
    $result = mysql_query("SELECT * FROM food WHERE name = $pid");
    //mysql_query($result,$con);
    if (!empty($result)) {
        // check for empty result
        if (mysql_num_rows($result) > 0) {


            $result = mysql_fetch_array($result);

            $product = array();
            $product["name"] = $result["name"];
            $product["unit"] = $result["unit"];
            $product["calory"] = $result["calory"];
            $product["carbohydrate"] = $result["carbohydrate"];
            $product["category"] = $result["category"];


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

            // user node
            $response["product"] = array();

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

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

            // echo no users 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 {
    // required field is missing
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

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

3 に答える 3

0

すべてをループに入れるだけでは、これは修正されません。あなたが与えたコードは同じ結果をもたらします..最後のもの。

$product はループの前に宣言する必要があります。そうしないと、常にリセットされます。また、 $product 配列を上書きせずに入力するには、多次元にする必要があります

$product[]['name'] = $result["name"];

製品の理想的な保管方法は、次のようになります..私の意見です。

$product = array();
while($result = mysql_fetch_array($result)) {    
        $product[$result['id']] = $result;
于 2013-03-20T12:05:21.927 に答える
0

これはmysql_fetch_array、ループ中ではないため、while ループに入れて確認します。

于 2013-03-20T11:55:03.723 に答える
0
        if (mysql_num_rows($result) > 0) {
        $result = mysql_fetch_array($result);

        $product = array();
        $product["name"] = $result["name"];
        $product["unit"] = $result["unit"];
        $product["calory"] = $result["calory"];
        $product["carbohydrate"] = $result["carbohydrate"];
        $product["category"] = $result["category"];


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

        // user node
        $response["product"] = array();

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

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

これを

while(mysql_num_rows($result) > 0 && ($result = mysql_fetch_array($result))) {

        $product = array();
        $product["name"] = $result["name"];
        $product["unit"] = $result["unit"];
        $product["calory"] = $result["calory"];
        $product["carbohydrate"] = $result["carbohydrate"];
        $product["category"] = $result["category"];


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

        // user node
        $response["product"] = array();

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

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

結果は配列であり、ループしていないため、配列内の要素は1つだけです

于 2013-03-20T11:57:33.980 に答える