过滤 SQL 查询
Posted
技术标签:
【中文标题】过滤 SQL 查询【英文标题】:Filtering SQL queries 【发布时间】:2021-12-29 08:30:32 【问题描述】:我正在创建一个 php 查询,试图从特定的 SQL 表中过滤特定的事件。 例如,表名为 tbl_events,一个特定的列显示用户 ID 数据,我们称之为 USER_ID 该表有超过 50.000 条数据行,因此如果我尝试使用 php 对其进行过滤,则需要花费太多时间。所以我的尝试是在向 php 表显示查询之前用 SQL 过滤它,看看它是否变得更快。
我想过滤查询,以便不显示拥有 ID 的人,比如说“2” 我的代码如下(显然它不起作用)
$GetEventsList = GetDataWhere("tbl_events","USER_ID!=2",0);
我是 SQL 命令的新手,所以请耐心等待 :)
【问题讨论】:
您必须显示该GetDataWhere
函数的内容以获得更准确的答案;但你目前的做法是个坏主意。如果它根本不起作用,那可能是因为您的数据库不理解 !=
运算符。大多数 dbms 使用 <>
代替,但是将数据(在这种情况下,数字 2
,直接写入 SQL 字符串是一个非常糟糕的主意(想想 SQL injection
)。然而,正确的做法完全取决于什么GetDataWhere
函数包含。
不工作怎么办?你得到什么错误? GetDataWhere
是什么样的?你试过USER_ID <> 2
吗?
您的表是否在字段 USER_ID 上有索引?
【参考方案1】:
这就是你要找的吗?
查询:
SELECT * FROM tbl_events WHERE USER_ID != '2'
所以要使用 php 来实现这一点,我会建议:
$servername = "Your server ip here";
$username = "Database_username_here";
$password = "Database_password_here";
$dbname = "Database_name_here";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error)
die("Connection failed: " . $conn->connect_error);
$sql = "SELECT * FROM tbl_events WHERE USER_ID != '2'";
// Run $sql content as sql script in db.
$result=$conn->query($sql);
【讨论】:
以上是关于过滤 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章