我正在对购物车进行编码,但总价格存在问题。
这是我尝试编写的函数:
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函数等。
答案 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
}