2017-07-07 8 views
1

次のクエリがあります。変数に値の範囲を使用する

$sel_referrals1="SELECT t1.referree AS GEN1, t2.referree as GEN2, t3.referree as GEN3, t4.referree as GEN4, t5.referree as GEN5, t6.referree as GEN6, t7.referree as GEN7, t8.referree as GEN8, t9.referree as GEN9, t10.referree as GEN10, t11.referree as GEN11 
             FROM referrals AS t1 
             LEFT JOIN referrals AS t2 ON t2.referrer = t1.referree 
             LEFT JOIN referrals AS t3 ON t3.referrer = t2.referree 
             LEFT JOIN referrals AS t4 ON t4.referrer = t3.referree 
             LEFT JOIN referrals AS t5 ON t5.referrer = t4.referree 
             LEFT JOIN referrals AS t6 ON t6.referrer = t5.referree 
             LEFT JOIN referrals AS t7 ON t7.referrer = t6.referree 
             LEFT JOIN referrals AS t8 ON t8.referrer = t7.referree 
             LEFT JOIN referrals AS t9 ON t9.referrer = t8.referree 
             LEFT JOIN referrals AS t10 ON t10.referrer = t9.referree 
             LEFT JOIN referrals AS t11 ON t11.referrer = t10.referree 
             WHERE t1.referrer = '{$_SESSION['user']}'"; 
$selected1 = mysqli_query($conn, $sel_referrals1); 
$selected_levels= mysqli_fetch_array($selected1); 

次のようにクエリの結果を処理したかったのですが、

$select_level1="SELECT SUM(amount) FROM topup WHERE user_id IN('{$selected1['GEN1']}')";//The is line 80 
$selected_level1 = mysqli_query($conn,$select_level1); 
$result_level1 = mysqli_fetch_row($selected_level1); 
$level1=number_format($result_level1[0],2); 

ただし、次のエラーが表示されます。

Fatal error: Cannot use object of type mysqli_result as array in D:\xampp2\htdocs\airtimez\referrals.php on line 80

$selected1は、結果オブジェクトではなく、フェッチの結果である、あなたは$selected_levelsをフェッチそれを

+0

@ chris85、私のエラーであなたの熱心な見てくれてありがとう。さて、$ selected_levelsは1つの値(行)を返すようです。私は$ selected1 ['GEN1']に値の配列を保持すると期待しています。実際にはそれは保持する必要があります(12,13,17,18,19,28) –

+0

実際には保持する必要があります(12,13,17,18,19,28 )。そのようなクエリは実際には同じようにすべきです。 SELECT SUM(amount)FROMトップアップWHERE user_id IN(12,13,17,18,19,28); –

+0

未定の回答を以下に投稿してください。ご質問/問題がある場合はコメントしてください。そうでない場合は問題を解決し、受け入れてください。 – chris85

答えて

0
  1. $selected1['GEN1']をデバッグする私を助けて。
  2. 複数の行をフェッチするには、fetchをループする必要がありますwhile($row = mysqli_fetch_array($selected1))
  3. SQLクエリに変数を入れてはいけません。これはSQLインジェクションにつながります。代わりに、パラメータ化されたクエリを使用します。
  4. sumを取得するためにidが必要な場合は、サブクエリを使用してください。大雑把

は:

$sel_referrals1="SELECT SUM(amount) as da_sum FROM topup WHERE user_id IN((SELECT t1.referree 
             FROM referrals AS t1 
             LEFT JOIN referrals AS t2 ON t2.referrer = t1.referree 
             LEFT JOIN referrals AS t3 ON t3.referrer = t2.referree 
             LEFT JOIN referrals AS t4 ON t4.referrer = t3.referree 
             LEFT JOIN referrals AS t5 ON t5.referrer = t4.referree 
             LEFT JOIN referrals AS t6 ON t6.referrer = t5.referree 
             LEFT JOIN referrals AS t7 ON t7.referrer = t6.referree 
             LEFT JOIN referrals AS t8 ON t8.referrer = t7.referree 
             LEFT JOIN referrals AS t9 ON t9.referrer = t8.referree 
             LEFT JOIN referrals AS t10 ON t10.referrer = t9.referree 
             LEFT JOIN referrals AS t11 ON t11.referrer = t10.referree 
             WHERE t1.referrer = ?))"; 
$selected1 = mysqli_prepare($conn, $sel_referrals1); 
mysqli_stmt_bind_param($selected1, 'i', $_SESSION['user']); 
mysqli_stmt_execute($selected1); 
while($row = mysqli_stmt_fetch($selected1)){ 
    echo number_format($row['da_sum'], 2); 
} 

あなたもuseridによってgroup合計したいかもしれませんが。

+0

aaw、何か助け@ chris85。どうもありがとうございます –

関連する問題