【问题标题】:Extract SQL Query with JSON - Codeigniter使用 JSON 提取 SQL 查询 - Codeigniter
【发布时间】:2017-06-27 21:13:48
【问题描述】:

我有一个名为 country_zones 的表,还有一个名为 country 的列,该列当前包含

["加拿大","美国"]

我首先提取他们注册的用户所在的国家/地区,然后需要查询哪些用户所在的国家/地区与 country_zones 行匹配。虽然每当我这样做时,我都会得到错误或 NULL

我试过了。

  $country = json_decode($this->db->get_where('country_zones',array('country'=>$user_country)));

还有。

$country = $this->db->query("SELECT * FROM country_zones WHERE country='$user_country'")->result();

【问题讨论】:

  • 你从你的尝试中得到了什么?
  • 显示更多代码,因为您显示的内容对我们没有太大帮助
  • 国家列的数据类型是什么?并分享 $user_country 价值?
  • 数据类型是 LongText,我只是有一个查询来提取用户国家/地区,它显示 '加拿大' 这就是 '$user_country' 所持有的。现在我需要在 country_zones 表中找到包含“加拿大”的行并将其返回

标签: php mysql json codeigniter


【解决方案1】:

假设 user_country 是加拿大,那么您的查询应该是:

SELECT * FROM country_zones WHERE country LIKE '%"Canada"%';

所以,试试这个:

$country = $this->db->query("SELECT * FROM country_zones WHERE country LIKE '%\"$user_country\"%'")->result();

编辑:

LIKE 查询是必需的,因为列包含["canada","United States"],并且您希望将其与Canada 匹配。所以上面的 LIKE 查询是 SQL 的说法,告诉我国家包含“加拿大”的行。

见:https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html

【讨论】:

  • 有效!你能解释一下为什么我需要使用 LIKE 以及 '%\ 是做什么用的吗??
  • 谢谢。现在,如果我只想提取国家行,我可以这样做 $thecountry = $country->row()->country; ??
  • “仅提取国家行”是什么意思?另外,PHP 不是我的强项,不过我可以帮助使用 MySQL。
猜你喜欢
  • 2023-02-25
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多