Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用单引号将变量包装在内爆函数中_Php_Mysql - Fatal编程技术网

Php 用单引号将变量包装在内爆函数中

Php 用单引号将变量包装在内爆函数中,php,mysql,Php,Mysql,我正在尝试使用内爆函数中的数组运行查询 $dosages = implode(" AND CONCAT(prescription,'-',dosage) =",$doses); $q=$this->db->query("SELECT account_num FROM ( SELECT account_num, CONCAT(prescription,'-',dosage) as script

我正在尝试使用内爆函数中的数组运行查询

$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'。我只是想知道是否有可能在内爆函数中用单引号将变量包装起来,这样当它被解析时,它就会像这样读出

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'

是的,您需要将引号添加到查询和
内爆()
,如下所示:

$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)) . "'";
编辑 这是我为修复它所做的

 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");
 }

1.你不只是缺少一个报价吗?2.这个
子句将永远不会返回任何记录。您的权利我只是在phpmyadmin中运行了这个查询,它没有返回任何内容。我使用了您的示例,它删除了错误,但我知道我应该返回两行,但我收到了一个空的结果集。另外,我认为在其中script='”之后有一个类型;我想您需要WHERE script='”。内爆(“'AND script='”,$doges)。“”);但我可能错了,因为您在查询中使用了
,您应该使用
WHERE script='”。内爆(“'或脚本='”,$s))。"'";
但是我希望记录同时包含两种处方,而不是一种,这就是我不使用OR语句的原因。如果可能的话,我怎么能做到呢?你不能在一列上加两个条件。你要做的是说“找到ID为5,ID为10的所有记录”。这是自相矛盾的,最多只能满足其中一个条件,这就使得这个函数总是找到零行。到底有没有办法做到这一点?好吧,也许我跳得太早了。在测试查询之后,我意识到它仍然没有给我正确的结果集。我使用了这个表达式“scriptin(“.”。introde(“,”,$doges)。“)”),它减少了不应该出现的行数,显示了应该出现的行数,但也显示了一些不应该出现的行数。我不是MySQL的最佳人选,因此非常感谢您的帮助。