【发布时间】:2017-06-16 12:42:15
【问题描述】:
我将 DataTables 与服务器端处理一起使用
$('#usersTable').DataTable(
{
responsive: true,
"pageLength": 20,
"processing": true,
"serverSide": true,
"bLengthChange": true,
"bSort" : false,
"bInfo" : false,
"aLengthMenu": [[20, 50, 75, -1], [20, 50, 75, "ყველა"]],
"ajax": "helpers/server_processing.php"
}
);
我还将ssp.class.php中的数据库连接更改为
$db = @new PDO(
"mysql:host={$sql_details['host']};dbname={$sql_details['db']}",
$sql_details['user'],
$sql_details['pass'],
array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'" )
);
尝试在搜索栏中搜索 UTF-8 字符时仍然遇到问题
有人可以帮忙吗?
查询(从评论中复制)
SELECT COUNT(`id`)
FROM `users`
WHERE (`id` LIKE :binding_0
OR `mac` LIKE :binding_1
OR `ip` LIKE :binding_2
OR `sname` LIKE :binding_3
OR `login` LIKE :binding_4
OR `tariff_plan_id` LIKE :binding_5
OR `now_playing_type` LIKE :binding_6
OR `now_playing_content` LIKE :binding_7
OR `now_playing_start` LIKE :binding_8
OR `keep_alive` LIKE :binding_9
OR `id` LIKE :binding_10
OR `status` LIKE :binding_11
)
SELECT COUNT(`id`)
FROM `users`
SELECT `id`, `mac`, `ip`, `sname`, `login`, `tariff_plan_id`,
`now_playing_type`, `now_playing_content`, `now_playing_start`,
`keep_alive`, `id`, `status`
FROM `users`
WHERE (`id` LIKE :binding_0
OR `mac` LIKE :binding_1
OR `ip` LIKE :binding_2
OR `sname` LIKE :binding_3
OR `login` LIKE :binding_4
OR `tariff_plan_id` LIKE :binding_5
OR `now_playing_type` LIKE :binding_6
OR `now_playing_content` LIKE :binding_7
OR `now_playing_start` LIKE :binding_8
OR `keep_alive` LIKE :binding_9
OR `id` LIKE :binding_10
OR `status` LIKE :binding_11
)
ORDER BY id ASC
LIMIT 0, 20
编辑:附加信息
我发现带有 utf-8 值的 LIKE 查询不适用于 mysql 中的 DateTime 字段
但 DataTables 会自动将每个字段与搜索字符串进行比较。如果字符串包含 utf-8 字符,是否有一种简单的方法可以告诉 DataTables 不要搜索 DateTime 类型的列?
【问题讨论】:
-
看下面的答案stackoverflow.com/a/31065121/617373,可能会有帮助
-
正如您在第二个代码块中看到的,我已经在我的 pdo 连接中插入了“set names utf8”
-
只是一个疯狂的猜测:数据库/某些表的排序规则设置不好,例如不是utf8。检查这个问题:stackoverflow.com/questions/1008287/…
-
所有表的排序规则都设置为 utf8_general_ci
-
您能否显示 a)
show full columns from your-table的输出和 b) 引发该错误的查询?
标签: javascript php mysql utf-8 datatables