我正在尝试发送值列表,并将它们用作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以获取详细说明。.谢谢

10-08 07:21
查看更多