0

我正在编写一个购物车,但总价有问题。

这是我尝试编写的函数:

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 函数等。

4

3 回答 3

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);
}
于 2013-10-18T16:56:27.323 回答
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
            }
        }
于 2013-10-18T16:56:43.403 回答
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
  }
于 2013-10-18T16:59:43.103 回答