【问题标题】:Comparing a constant with an array(or multiple values.)将常量与数组(或多个值)进行比较。
【发布时间】:2011-08-19 21:49:42
【问题描述】:

我正在尝试搜索 25 英里范围内匹配的邮政编码。 假设我从我的函数中得到了 10 个邮政编码,这是正确的。

现在我的值存在于这样的变量中:

$zip_res = A0A 1B0, A0A 1G0, ...

列名是 postal_code。

如何使用 postal_code 一次匹配所有值? 我不能使用循环,我必须一次性完成。

欢迎提出任何建议。

编辑

使用 $zip_res 的 MySQL 语句

$sql=   "SELECT distinct(p.id), p.extra FROM practitioner p INNER JOIN practitioner_category pc ON pc.practitioner_id = p.id AND pc.category_id = ";
$sql .= "'" .$this->category. "' ";
$sql .= "AND p.primary_postal_code in " .$zip_res. " WHERE 1 AND p.status = 1 "; 

【问题讨论】:

  • 大写字母有问题吗?对我来说,这看起来不像是有效的 MySQL...
  • 这不是 MySQl 查询。这就是数据的排列方式。
  • 您还没有演示任何数据的排列方式。你有一个叫做$zip_res 的东西,它“等于”一堆字符;这没有道理。这到底是什么语言?
  • 我同意这可能是更精确的方式。这个 MySQL。这些字符是邮政编码(加拿大格式)。我需要它来匹配我数据库中的邮政编码。顺便说一句,@cwallenpoole 回答了我,正是需要的。
  • 正如我所说,这不是有效的 MySQL。你能演示一下在 MySQL 语句中使用的代码吗?

标签: php mysql search


【解决方案1】:

您似乎只是在寻找 IN 关键字:

SELECT * FROM TABLE_NAME WHERE POSTAL_CODE IN ($zip_res);

不过,就像注释一样,您需要能够首先引用所有这些项目。因此,您可以在使用上述查询之前执行此操作:

$zip_res = "'" . str_replace(',',"','",$zip_res) . "'";

【讨论】:

  • 非常感谢!你的“就像一个笔记”非常有用。 :)
  • 这是 PHP。这个关于 PHP 的问题是从什么时候开始的?
  • @Tomalak 基于印记的存在(意味着它可能是 PHP 或 Perl),以及 OP 对 SO 的其他贡献(引用 strtotime),不难猜测它是 PHP .
  • @callenpoole:猜测无关紧要。该问题没有指定PHP。我什至要求澄清,OP回复“这是MySQL”:(
  • @Gangesh:下次请把问题的主题说清楚。
【解决方案2】:

你可以试试

select ... from ... where postal_code ALL($zip_res).

但我不确定,因为按照手册您应该使用子查询。 见http://dev.mysql.com/doc/refman/5.5/en/all-subqueries.html

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多