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
$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'];
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。