2016-11-01 62 views
-3

こんにちは私はこれらの行を簡素化する方法をコードを削減しようとしています。質問が標準に達していない場合は編集を提案してください。どのように私は同じテーブルからカウントのクエリを簡素化することができます

$invCount = $conn->query("SELECT 
(SELECT COUNT(*) FROM r_job_invitations WHERE id_job='".$_POST['JobId']."' and inv_st=1) as clginvcount, 
(SELECT COUNT(*) FROM r_job_invitations WHERE id_job='".$_POST['JobId']."' and inv_res=1) as clgaccptdcount, 
(SELECT COUNT(*) FROM r_job_invitations WHERE id_job='".$_POST['JobId']."' and inv_res=2) as clgrejectedcount, 
(SELECT COUNT(*) FROM r_job_invitations WHERE id_job='".$_POST['JobId']."' and inv_res=0) as clgnoresponsecount"); 
$invCountRes = $invCount->fetch_assoc(); 
+0

正確にカウントしますか? – Massimo

+0

あなたは単純化して何を意味するのでしょうか?また、あなたのPOST変数に入力バリデーションを使用して、まっすぐにそれらをSQL文に挿入しないでください。このコードはSQLインジェクションに対して非常に脆弱です。 – sietse85

+0

私は1つのテーブルから4つのタイプのカウントを取得しようとしています。私が与えた答えを見てください。 –

答えて

1

あなただけがこのクエリを使用しても、最初のユーザー入力を検証してくださいすることができcoumnのinv_resで0,1,2値している場合:あなたはより多くの価値を持っている場合は

以下、使用を

$jobId = mysqli_real_escape_string($_POST['JobId']); 
SELECT 
    count(*), inv_res 
FROM r_job_invitations 
WHERE 
    id_job ='".$jobId."' 
GROUP BY inv_res 

SELECT 
    count(*), inv_res 
FROM r_job_invitations 
WHERE 
    id_job ='".$jobId."' AND 
    inv_res IN(0,1,2) 
GROUP BY inv_res 
関連する問題