我正在尝试发送值列表,并将它们用作sql查询中的列名。但是它不起作用,我也不知道为什么。我启用了php警告,日志文件未显示任何错误。我尝试了phpMyAdmin中的sql查询,它起作用了。同样,在发送数组的我的jquery函数中也没有错误。谁能帮我?
这是我的php文件,它获取数组:
$effect = $_GET['effect'];
$effectArray = rtrim(str_repeat("e.? = 't' OR ", count($effect)), "OR ");
$result = $db->prepare("
SELECT *
FROM skills s, skill_effect_types e
WHERE s.id=e.skill_id AND ($effectArray)");
$result->execute($effect);
$result->setFetchMode(PDO::FETCH_OBJ);
这是$ result的print_r:
PDOStatement Object ( [queryString] => SELECT * FROM skills s, skill_effect_types e WHERE s.id=e.skill_id AND (e.? = 't' OR e.? = 't'))
这是$ effect的print_r:
Array ( [0] => silence [1] => stun )
最佳答案
不能替换PDO中的表和列,而是可以过滤和清理数据,这是将速记参数分配给将运行查询的函数的一种方法。
请查看here以获取详细说明。.谢谢