0

製品とカートという名前の2つのテーブルからプルしているmysql結合があり、両方とも変数$row_checkoutからプルされています

特定のフィールドをエコーする必要がある場合、通常は $row_checkout['cartid'] に移動できます。これは正常に機能します。

ただし、各テーブルには同じ「ステータス」と呼ばれる列があります。

テーブルの 1 つからエコーするにはどうすればよいですか? $row_checkout['cart.status'] のようなものが機能するかもしれないと思ったのですが、そうではありませんか?

私のデータベースコードは次のとおりです。

$colname_checkout = "-1";
if (isset($row_booking['sessionid'])) {
  $colname_checkout = (get_magic_quotes_gpc()) ? $row_booking['sessionid'] : addslashes($row_booking['sessionid']);
}
mysql_select_db($database_main, $main);
$query_checkout = sprintf("SELECT * FROM cart, productdatabase WHERE cart.productid = productdatabase.productid AND cart.status != 1 AND cart.status != 0 AND cart.sessionid = '%s' ORDER BY `name` ASC", $colname_checkout);
$checkout = mysql_query($query_checkout, $main) or die(mysql_error());
$row_checkout = mysql_fetch_assoc($checkout);
$totalRows_checkout = mysql_num_rows($checkout);
4

2 に答える 2

1

エイリアスを使用して、テーブルのフィールド名を任意の名前に変更できます。

cart.status フィルタでは、 > 1 と尋ねることで、よりシンプルに、よりシンプルにすることができます

SELECT c.status as car_status, pro.status as pro_status 
FROM cart as c, productdatabase as pro
WHERE c.productid = pro.productid AND c.status >1 AND c.sessionid = '%s' 
ORDER BY `name` ASC", $colname_checkout

取得したものを見ると、すべての名前と値を含む連想配列が表示され、データのアドレス指定に使用できます

while ($row_checkout = mysql_fetch_assoc($checkout)) {
    print_r($row_checkout);
}

または特定のフィールド:

while ($row_checkout = mysql_fetch_assoc($checkout)) {
    echo $row_checkout["car_status"];
    echo $row_checkout["pro_status"];
}

別のコメントとして、mysql 関数は推奨されなくなりました。MySQLi または PDO_MySQL を使用できます。どちらもオブジェクト指向であり、学習にはもう少し時間が必要な場合があります。

于 2013-07-19T09:51:27.100 に答える
0

を使用しaliasます。

参考: http ://www.tutorialspoint.com/sql/sql-alias-syntax.htm

 $query_checkout = 
 sprintf("SELECT *,**cart.status AS cart_status, productdatabase.status as
 pdb_status** FROM  cart, productdatabase WHERE
 cart.productid = productdatabase.productid AND
 cart.status != 1 AND cart.status != 0 
 AND cart.sessionid = '%s' ORDER BY `name` ASC", $colname_checkout);
于 2013-07-19T09:51:19.160 に答える