0

implode 関数内で配列を使用してクエリを実行しようとしています。

$dosages = implode(" AND CONCAT(prescription,'-',dosage) =",$doses);
$q=$this->db->query("SELECT account_num 
                     FROM ( 
                     SELECT account_num, CONCAT(prescription,'-',dosage) as script 
                     FROM ci_prescription_history 
                     )a 
                     WHERE script=".implode(' AND script=',$doses));

MySQL は、「'where 句' の不明な列 'Advair'」と言い続けます。implode 関数内の変数を一重引用符で囲むことが可能かどうかを知りたいだけなので、解析すると次のように読み出されます

SELECT account_num 
FROM ( SELECT account_num, CONCAT(prescription,'-',dosage) as script 
FROM ci_prescription_history 
)a 
WHERE script='Advair-230/21' AND script='Advair-250/50'
4

2 に答える 2

1

はい、次のように、クエリとに引用符を追加する必要がありますimplode()

$q=$this->db->query("SELECT account_num 
                 FROM ( 
                 SELECT account_num, CONCAT(prescription,'-',dosage) as script 
                 FROM ci_prescription_history 
                 )a 
                 WHERE script='" . implode("' AND script ='", $doses)) . "'";
于 2013-05-01T19:24:27.540 に答える
0

編集 これを修正するために私がしたことは次のとおりです

 foreach ($accounts as $account) {
     $q=$this->db->query("SELECT account_num 
     FROM ( 
     SELECT account_num, CONCAT(prescription,'-',dosage) as script 
     FROM ci_prescription_history 
     )a 
     WHERE script='".implode("' OR script ='",$doses)."' AND account_num=$account");
 }
于 2013-05-01T20:07:35.743 に答える