Datatables PHP MySQL 如何筛选显示rodzaj为ebook的特定条目
修复方法
你现在的代码核心问题是SQL语句写错了,而且没加过滤条件,按下面改就能正确读取所有rodzaj为ebook的条目。
第一步:替换错误的SQL查询语句
你原来写的SELECT DISTINCT rodzaj * FROM bazaplikow本身语法就不对,直接换成下面的查询语句,在数据库层就把非ebook的条目过滤掉,性能最好:
// 明确指定需要查询的列,通过WHERE条件筛选rodzaj等于ebook的行 $sql = "SELECT okladka, imie, nazwisko, tytul, rodzaj, info, download, data FROM bazaplikow WHERE rodzaj = 'ebook'";
不建议把所有类型的数据都查出来再在PHP循环或者DataTables前端过滤,平白多查很多没用的数据,拖慢加载速度。
修正后的PHP数据库连接段完整代码
<?php $servername = "xyz"; $username = "xyz"; $password = "xyz"; $database = "serwer144221_SwiatBook"; // 建立数据库连接 $connection = new mysqli($servername, $username, $password, $database); // 连接失败直接抛错 if ($connection->connect_error) { die("数据库连接失败: " . $connection->connect_error); } // 查询所有ebook类型的记录 $sql = "SELECT okladka, imie, nazwisko, tytul, rodzaj, info, download, data FROM bazaplikow WHERE rodzaj = 'ebook'"; $result = $connection->query($sql); if (!$result) { die("查询执行失败: " . $connection->error); } ?>
额外提醒
- 你原来SQL里写的
DISTINCT完全没必要,除非你的表里存在整行完全重复的数据,加了反而会降低查询效率。 - 如果后续要做ebook/audiobook切换展示的功能,不要直接拼接用户传入的类型参数到SQL里,要用PDO或者mysqli的预处理语句绑定参数,避免SQL注入漏洞。
- 你剩下的HTML和DataTables初始化代码不需要改,查出来的数据全是ebook类型的,表格渲染出来自然就只有对应条目。
内容的提问来源于stack exchange,提问作者KoKoKoError404
相关产品推荐
相关产品推荐

