-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

这是因为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);
    }

结果是数组,你没有循环遍历它,所以它只给出数组中的一个元素

于 2013-03-20T11:57:33.980 回答
0

简单地把所有东西都放在一个循环中并不能解决这个问题。您提供的代码将给出相同的结果..最后一个。

$product 需要在循环之前声明,否则它将始终被重置。此外,为了在不覆盖的情况下填充 $product 数组,您需要将其设为多维

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

The ideal way of storing the products would be like this.. in my opinion.

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