select语句总是返回php mysql中最后一个插入的行

时间:2013-03-20 11:52:32

标签: php mysql select

当我编写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);

3 个答案:

答案 0 :(得分:0)

这是因为mysql_fetch_array不在循环中,将其放入while循环并检查。

答案 1 :(得分: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);
    }

结果是数组而你没有循环遍历它 所以它只在数组中提供一个元素

答案 2 :(得分:0)

简单地将所有内容放入循环中将无法解决此问题。您给出的代码将给出相同的结果..最后一个。

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

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

在我看来,存储产品的理想方式就是这样..

$product = array();
while($result = mysql_fetch_array($result)) {    
        $product[$result['id']] = $result;