作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的本地开发机器 (MAMP) 上,我的 MySQL 查询返回正确的大小写。但是,在我的共享托管服务器上,使用 fetch(PDO::FETCH_ASSOC);
我试过以下方法:
$db = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
但是好像没有效果,我错过了什么?
例子:
$findUpload = $db->prepare('
SELECT * FROM
uploads
WHERE
slug = :slug
LIMIT 1
');
$findUpload->execute(array(
':slug' => $_GET['entry']
));
$_GET['entry']
是 Zcbc
当我做的时候
$getUpload = $findUpload->fetchAll(); // switched to fetchAll temporarily
$singleUpload = $getUpload[0];
echo $singleUpload['slug']//输出 zcbc
某处将我之前混合大小写的字符串转换为全部小写。 $_GET 变量和 MySQL 条目都是大小写混合的字符串。
最佳答案
PDO::ATTR_CASE
设置 COLUMNS 的大小写处理...如果我没理解错的话,你会得到条目的 VALUE用错了大小写?
您是否使用 PHPMyAdmin 或类似工具运行查询?我怀疑您有多个条目具有相同的 slug 但大小写拼写不同(pdc 与 pDc)。由于您使用的是不区分大小写的排序规则 (_ci),您可能会得到一个与您提供的拼写不同的条目,而不是您预期的拼写。
对于单个查询,您可以像这样使用不同的排序规则:
SELECT * FROM
uploads
WHERE
slug COLLATE utf8_bin = :slug
LIMIT 1
如果您希望此行为成为默认行为,您可以更改整个表的排序规则。
ALTER TABLE `tablename` COLLATE utf8_bin
关于php - PDO 忽略共享主机上的 PDO::CASE_NATURAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23769324/
我是一名优秀的程序员,十分优秀!