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

したがって、最初に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 に答える
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 に答える