mysql_query()が成功時にリソースを返し、エラー時に FALSE を返すため、ロジックが 正しくありません。値(あなたの場合は数量)を返しません。
配列内の値をフェッチするには、mysql_fetch_arrayを使用します— 結果行を連想配列、数値配列、またはその両方としてフェッチします。
$tp=0
while ループの前に初期化する
$tp = $tp + $p;
と置き換えます
$tp=$tp+$r[0]
完全なコードは次のとおりです。
<?php
$p = mysql_query("SELECT qtt FROM stock_request WHERE branch_id = 'bachok' AND type = 'Pants'") ;
$tp=0;
while ($r = mysql_fetch_array($p,MYSQL_NUM))
{
$tp = $tp + $r[0];
}
echo $tp;
?>
更新: $r[0] の意味は何ですか?
mysql_fetch_arrayは、次の 3 つの方法で使用できます。
MYSQL_NUM を指定した mysql_fetch_array()
MYSQL_ASSOC を使用した mysql_fetch_array()
MYSQL_BOTH を使用した mysql_fetch_array()
私は $r=0 を使用していました。MYSQL_NUM を含む mysql_fetch_array。
この場合、数値インデックスのみを取得します。例えば :
$result = mysql_query("SELECT a,b,c,d,e FROM mytable");
$row = mysql_fetch_array($result, MYSQL_NUM))
$row [0] は a の値を意味します
$row [ 1] は b の値を意味します
$row [ 2] は c の値を意味します
…………
$row[4]=e の値を意味します。
したがって、クエリでは、 $r[0] はqttの値を参照します