php连接Mysql用stmt防注入如何进行模糊查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php连接Mysql用stmt防注入如何进行模糊查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1911字,纯文字阅读大概需要3分钟。
内容图文
![php连接Mysql用stmt防注入如何进行模糊查询](/upload/InfoBanner/zyjiaocheng/237/68ac7303436e4d29814ae6f211eef38e.jpg)
$sqlLink = init_mysql();
$stmt = $sqlLink->stmt_init()
$sql = 'SELECT ? FROM ?;';
$stmt->prepare($sql);
$stmt->bind_param("ss",'colA','tableA');
$stmt->execute();
Q2:参数化防止注入,如何进行模糊查询?
1.sql = 'SELECT * FROM tableA WHERE col LIKE \'%?%\'';
2.sql = "SELECT * FROM tableA WHERE col LIKE '%?%'";
3.sql = 'SELECT * FROM tableA WHERE col LIKE \'%'.'?'.'%\'';
以上方式我经过尝试都不能使用,请问带%模糊查询如何书写SQL的prepare语句?
有一种可行的方式如下:
sql = 'SELECT * FROM tableA WHERE col LIKE \'%'.$string.'%\'';
但是失去了防注入的意义,请问有没有正确的方式给予我引导?:-D
回复内容:
Q1:以下代码是正确的吗?即表名和列名也可以用参数化导入吗?
$sqlLink = init_mysql();
$stmt = $sqlLink->stmt_init()
$sql = 'SELECT ? FROM ?;';
$stmt->prepare($sql);
$stmt->bind_param("ss",'colA','tableA');
$stmt->execute();
Q2:参数化防止注入,如何进行模糊查询?
1.sql = 'SELECT * FROM tableA WHERE col LIKE \'%?%\'';
2.sql = "SELECT * FROM tableA WHERE col LIKE '%?%'";
3.sql = 'SELECT * FROM tableA WHERE col LIKE \'%'.'?'.'%\'';
以上方式我经过尝试都不能使用,请问带%模糊查询如何书写SQL的prepare语句?
有一种可行的方式如下:
sql = 'SELECT * FROM tableA WHERE col LIKE \'%'.$string.'%\'';
但是失去了防注入的意义,请问有没有正确的方式给予我引导?:-D
- 不能。
原来的prepare引入的目的,是为了预编译,生成执行计划,从而提高性能。本意可不是为了防止sqlinject。如果table都没有了,是无法预编译的。就没有意义了。
- $sql = "SELECT * FROM tableA WHERE col LIKE CONCAT('%',?,'%')";
涉及到的是 PHP Binding a Wildcard 的知识。
补充:如果不bind parameter。可以直接拼接字符串。对引入的参数,都做一个escape就安全了。(函数: mysql_real_escape_string)
$db = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD, $pdo_options);
$query = $database->prepare('SELECT * FROM table WHERE name LIKE :name');
$query->bindValue(':name', '%'.$name.'%', PDO::PARAM_STR);
$query->execute();
while ($results = $query->fetch())
{
echo $results['name'];
}
内容总结
以上是互联网集市为您收集整理的php连接Mysql用stmt防注入如何进行模糊查询全部内容,希望文章能够帮你解决php连接Mysql用stmt防注入如何进行模糊查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。