【问题标题】:PDO Like Condition, Make UPPERCASE MatchPDO 类似条件,使大写匹配
【发布时间】:2013-04-03 21:54:38
【问题描述】:

我正在尝试使用 PDO LIKE 条件从数据库中获取相应的值。现在问题是数据库中的一些值以大写开头。我正在尝试使用 UPPERCASED 列值查询数据库。

如果我使用此代码:

$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $connection->prepare('SELECT * FROM ingredient WHERE name LIKE ?');
    $query = '%'.$queryEntered.'%';
    $stmt -> execute(array($query));

我确实得到了结果,我更希望有类似的东西

$query = $queryEntered.'%';
    $stmt -> execute(array($query));

我似乎无法让列中的数据大写,因此永远不会匹配。 一直在寻找。任何帮助都会很好。

【问题讨论】:

  • SELECT * FROM ingredient WHERE UPPER(name) LIKE ? 会工作吗?

标签: php pdo xampp


【解决方案1】:

这取决于您使用的字符集和排序规则。大多数 MySQL 安装默认为 latin1_swedish_ci,它具有不区分大小写的字符串比较。您可以尝试强制进行区分大小写的比较。

'SELECT * FROM ingredient WHERE name COLLATE latin1_general_cs LIKE ?'

另见此处:http://dev.mysql.com/doc/refman/5.6/en/case-sensitivity.html

【讨论】:

  • 不区分大小写是可以的,我刚刚验证它是 latin1_swedish_ci。我只是不明白为什么当我将查询值更改为“value%”而不是“%value%”时我没有得到结果
  • 你能发布一个你的输入(queryEntered)和你的数据(查询表)的例子吗?我不能 100% 确定我是否理解您的问题。
猜你喜欢
  • 2021-12-21
  • 1970-01-01
  • 2014-11-03
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多