Php PDO-在我的情况下,bindValue和bindParam的比值很大
是的。。。这是其中之一 嗯,我目前正在研究一种我们可以称之为社交网络的东西。 我在PDO中使用Slim框架,这是我的第一份工作,也是我的第一个项目。 所以,问题是我的控制器中有一个字符串,但我想将它传递到模型,但在它传递到模型之后(我用print\r测试了它是否传递,它是否传递),bindParam似乎没有将它放在查询中 其功能如下:Php PDO-在我的情况下,bindValue和bindParam的比值很大,php,sql,pdo,slim,Php,Sql,Pdo,Slim,是的。。。这是其中之一 嗯,我目前正在研究一种我们可以称之为社交网络的东西。 我在PDO中使用Slim框架,这是我的第一份工作,也是我的第一个项目。 所以,问题是我的控制器中有一个字符串,但我想将它传递到模型,但在它传递到模型之后(我用print\r测试了它是否传递,它是否传递),bindParam似乎没有将它放在查询中 其功能如下: public static function obterTagsDasPessoas($ids) { $container = getContai
public static function obterTagsDasPessoas($ids)
{
$container = getContainer();
$query = $container->db->prepare("SELECT * FROM Pessoas_tags WHERE :ids");
$query->bindParam(':ids', $ids, PDO::PARAM_STR);
$query->execute();
$result = $query->fetchAll();
return $result;
}
我试着改为bindValue,因为我发现它更适合文本。我不知道发生了什么,因为它没有给出任何错误;它似乎没有应用bindParam,然后继续。
在$ids
中有id_Pessoas=1或id_Pessoas=4
,它们应该补充上面的查询。我试着将它复制到phpmyadmin和mySql,它给了我预期的结果,但它无法使用该函数
我做错什么了吗?提前感谢。我认为您应该在$ids参数中发送一个id,例如1或4 然后将查询编辑为 $query=$container->db->prepare(“从Pessoas\u标记中选择*,其中id\u Pessoas=:id”)
我认为这应该行。但我需要发送每一个,我永远不知道查询需要多少id。您可以在$ids参数中发送数组,然后在查询中使用where in$query=$container->db->prepare(“选择*FROM Pessoas_tags where in id_Pessoas:ids”);然后使用$query->bind_参数('ids',…$ids);您能举例说明吗?$ids参数应该只包含ID作为一维数组,如$ids=array(1,4,8);然后在bind param中,$ids被称为参数解包。。。是splat运算符。
$ids
是数组吗?还是字符串?现在它是字符串,但它是从数组生成的。我从一个表中获取了id,并生成了一个字符串,根据id的数量给我类似“id_Pessoas=1或id_Pessoas=2或id_Pessoas=3”的信息。你可以使用WHERE IN
来代替。这是kawsar joy在回答的评论中所建议的,但出于某种原因,我无法让它工作。我从来没有使用WHERE-IN或unpacking。那么你肯定应该阅读它,否则你最终编写的代码可能很脆弱,很难维护。