【发布时间】:2018-07-22 22:08:23
【问题描述】:
好的,
我不知道到底是什么问题。所以,我决定把它贴在这里和你讨论。
问题是,当我在 PDO execute(array(implode(",",$imploded)))); 中使用 php 内爆函数时,它不起作用
当我在select语句中使用php implode函数“具有相同变量的相同函数”时,它可以正常工作!
我怀疑在语句中使用它是 SQL 注入的机会。
这是我的完整代码:
$exCat = explode(",", $article['Category']);
$getCats = $con->prepare("SELECT * FROM `Categories` WHERE `ID` IN (?)");
if (is_array($exCat)) {
$getCats->execute(array(implode(",", $exCat))); /* This Is only displaying the first element */
} else {;
$getCats->execute(array($exCat));
}
$getCATS = $getCats->fetchAll();
这对我来说很好。但是,我怀疑在语句中使用它是 SQL 注入的机会。
$exCat = explode(",", $article['Category']);
$anotherStmt = $con->prepare("SELECT * FROM `Categories` WHERE `ID` IN (" . implode(",", $exCat) . ")"); /* This Works fine */
$anotherStmt->execute();
$anotherCATS = $anotherStmt->fetchAll();
【问题讨论】:
-
“所以,我决定把它贴在这里和你讨论。 - 这不是讨论的地方,因为它往往会填满 cmets 区域。我(对于一个)不知道您要问的是什么或真正的问题是什么。如果您的代码在您将 cmets 放入每个代码时有效,并且觉得您可能仍然对注入持开放态度并询问其他人是否好的与否,那么帖子应该被移到某个地方的聊天室和/或发布在代码审查中。它有效还是无效?你在自相矛盾。
-
好的,谢谢您的建议。我的问题很清楚,为什么 implode 可能在 execute() 上不起作用;当它放在sql语句上时它可以正常工作。我把它放在sql语句上没有问题,但这不会造成sql注入问题吗?
标签: php sql pdo sql-injection