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的最佳人选,因此非常感谢您的帮助。