php mysql获得总价

时间:2013-10-18 16:52:51

标签: php mysql function

我正在对购物车进行编码,但总价格存在问题。

这是我尝试编写的函数:

function get_total_price(){
    $result=mysql_query("SELECT SUM(price) FROM db.cart WHERE user_id='".mysql_real_escape_string($_SESSION['user_id'])."'") or die();
    return $result;
  }

但结果我得到了

  

资源ID#10

希望有人可以提供帮助。首先我开始没有函数编码,但现在我想学习如何创建php函数等。

3 个答案:

答案 0 :(得分:1)

您使用的是mysql_*函数的弃用版本。请参阅http://php.net/manual/en/book.mysqli.php或PDO:http://php.net/manual/en/ref.pdo-mysql.php

顺便说一下,你现在必须使用:mysql_fetch_array()函数获取数组。

示例:

while ( $row = mysql_fetch_array($result) )
{
print_r($row);
}

答案 1 :(得分:0)

您的查询不会返回值本身,而是返回包含该值的资源。所以你应该尝试迭代资源,如:

$resource = mysql_query("SELECT SUM(price) FROM db.cart WHERE user_id='".mysql_real_escape_string($_SESSION['user_id'])."'") or die();
        if($resource){
            while($data = mysql_fetch_array($resource)){
                // iterating
            }
        }

答案 2 :(得分:0)

首先mysql_query折旧,您应该改为mysqli_query。但它实际上是以正确的方式工作,当SQL执行时,如果查询成功,则会返回一个链接标识符。然后,您需要使用例如mysql_fetch_array打开它,因此最终的脚本将是:

function get_total_price(){
    $result=mysql_query("SELECT SUM(price) FROM db.cart WHERE user_id='".
      mysql_real_escape_string($_SESSION['user_id'])."'") or die();
    $row= mysql_fetch_array($result);
    mysql_free_result($result);//Be a good citizen and release the memory
    return $row[0];//The actual sum
  }

或者使用较新的库:

//mysqli is a link to the database
function get_total_price($mysqli){
    $result=$mysqli->query("SELECT SUM(price) FROM db.cart WHERE user_id='".
      $mysqli->real_escape_string($_SESSION['user_id'])."'");
    if (!$result) die();//This could be more instructive
    $row=$result->fetch_array(MYSQLI_NUM);
    $result->free();
    return $row[0];//The actual sum
  }