Php 选择WHERE=sybol不返回数据

Php 选择WHERE=sybol不返回数据,php,sqlite,Php,Sqlite,a有一个sqlite表 创建表“lib”( “id”整数唯一, “地址”文本唯一, “数据”文本, 主键(“id”) ) 测试数据集包含: 。。。 1阿拉拉-阿拉拉试验 2单元=复合试验 ... 我在测试请求旁边使用代码 我的代码怎么了 。。。不幸的是,很多 我从未见过有人将QUERY\u字符串直接注入查询。这个字符串有多容易被破坏?如果我想注入一些恶意sql,我只需要将其写入。如果我出错,那么查询将不会返回任何内容。如果我以后添加一个新参数,因为我需要多个参数,那么查询将失败 恶意sql

a有一个sqlite表

创建表“lib”(
“id”整数唯一,
“地址”文本唯一,
“数据”文本,
主键(“id”)
)
测试数据集包含:

。。。
1阿拉拉-阿拉拉试验
2单元=复合试验
...
我在测试请求旁边使用代码


我的代码怎么了

。。。不幸的是,很多

我从未见过有人将
QUERY\u字符串直接注入查询。这个字符串有多容易被破坏?如果我想注入一些恶意sql,我只需要将其写入。如果我出错,那么查询将不会返回任何内容。如果我以后添加一个新参数,因为我需要多个参数,那么查询将失败

恶意sql是这里最危险的问题,另一个是关于代码可维护性的问题,仍然非常重要。看看这个

还有这个

您需要解析查询字符串,以便检查和清理数据。Php有一个内置函数用于:

然后,您应该将数据绑定到您现在读到的准备好的语句中

我不知道您是否负责调用此脚本,但似乎POST数据更适合于此。GET参数是可见的,并存储在web服务器日志中,因此您可能存在个人数据的安全漏洞。您也不需要担心url_编码/解码字符串

//编辑


公平地说,使用PHP的
parse_str
对url进行解码,这样,如果无法将其转换为post,至少可以解决这个问题使用
urlencode($queysting)
在发送到查询字符串参数之前,然后在使用
urldecode($\u SERVER[“query_string]”)之后传递
,同时检查get参数,字符串传递到query()correct
SELECT*FROM lib WHERE addr='unit=comp'
您的代码一切都有问题
echo
不是函数,因此不需要括号
$\u服务器[“QUERY\u STRING”]
注入SQL没有意义。避免SQL注入。使用参数化的准备状态集。我怀疑它是否会执行
或消亡(“无法打开数据库”)
@Dharman我为PDO准备修改了php;在这个变体中,任何请求都不返回任何数据请使用更新的代码回答问题。我的问题不是关于安全性的,您可能会看到>>我在测试请求旁边使用代码,但我需要解决“=”的问题。在这种情况下,我修改了php for PDO prepare;在此变体中,任何请求都不返回任何数据