2

我一直在绞尽脑汁,试图得到一些看起来很简单的东西。我有一个表“重量”。重量有 3 列“shipping_to”、“shipping_from”和“shipping_cost”。

Shipping_to 和 Shipping_from 是重量值,如果值大于或等于 X 并且小于或等于 X,则运费包含运费。

我已经用一百万种不同的方式写了这篇文章,但对我的生活来说,它是行不通的。

更新:脚本工作“有点”,但它永远不会返回成功响应 1 并且它永远不会确定 X 的值,即使我已经手动将这些值放入我的 MySQL 数据库。

PHP脚本:

if($The_Function=="SHIPPING_COST"){
    $response = array();

    require_once __DIR__ . '/db_connect.php';

    $con = new DB_CONNECT();

    $ship_weight = 1;


    $result = mysql_query("SELECT * FROM weight WHERE from_weight >= '$ship_weight' AND to_weight <= '$ship_weight'");

    if(!empty($result)){
        if (mysql_num_rows($result) > 0) {
            $response["userID"] = array();
            while ($row = mysql_fetch_array($result)) {
                $custID = array();
                $custID["shipping_cost"] = $row["shipping_cost"];
                array_push($response["userID"], $custID);
            }
            $response["success"] = 1;

            echo json_encode($response);
        }else {
            $response["success"] = 0;
            $response["message"] = "No shipping found";

            echo json_encode($response);
        }
    }else {
        $response["success"] = 0;
        $response["message"] = "No shipping found";

        echo json_encode($response);
    }
}
4

3 回答 3

2

错误出在查询本身。我所要做的就是给最后一个 Column 提供一些比较的东西,所以我再次添加了 $ship_weight 。这是代码。

$result = mysql_query("SELECT * FROM weight WHERE '$ship_weight' >= from_weight AND  '$ship_weight' <= to_weight");
于 2013-07-17T17:24:39.677 回答
0

我认为问题是$result永远不会empty()

如果查询有效, if 将是 a resource handle,如果失败,它将是false

所以试试这个:

$result = mysql_query("SELECT * FROM weight WHERE from_weight >= '$ship_weight' AND to_weight <= '$ship_weight'");

if($result !== FALSE){
    if (mysql_num_rows($result) > 0) {
        $response["userID"] = array();
        while ($row = mysql_fetch_array($result)) {
            $custID = array();
            $custID["shipping_cost"] = $row["shipping_cost"];
            array_push($response["userID"], $custID);
        }
        $response["success"] = 1;

        echo json_encode($response);
    }else {
        $response["success"] = 0;
        $response["message"] = "No shipping found";

        echo json_encode($response);
    }
}else {
    $response["success"] = 0;
    $response["message"] = "No shipping found";

    echo json_encode($response);
}
于 2013-07-16T22:12:01.727 回答
0

这是您的代码的复制和粘贴吗?如果是这样,请查看这一行:

$result = mysql_query("SELECT * FROM weight WHERE from_weight >= '$ship_weight' AND to_weight <= '$ship_weight'");

PHP 正在考虑将您的$ship_weight变量作为字符串的一部分。将其更改为:

$result = mysql_query("SELECT * FROM weight WHERE from_weight >= '".$ship_weight."' AND to_weight <= '".$ship_weight."'");

此外,不推荐使用 mysql_* 。看看mysqli_* 扩展

于 2013-07-17T01:50:48.253 回答