我有一个数据库,其中有一个表有两列,比如aa_id和bb_id - 每个列都是与另一个表相关的外键,两列都为这个特定的表创建了一个复合键。有几行包含相同的aa_id和不同的bb_id或相同的bb_id和不同的aa_id。 使用pdo我想提取相同的行 - 让我们说 - aa_id我希望这样做在url中传递参数值。所以select语句的结果应该是几行,它们应该保存为 - 例如 - 数组。 我尝试使用以下代码执行此操作:
$sql = sprintf("select aa_id, bb_id from a_table where aa_id=:aa_id");
$res = $db->query($sql);
$rows = $res->fetch(PDO::FETCH_ASSOC);
foreach($rows as $key=>$value)
{
echo $key . " - " . $value . "</br>";
}
它没有结果。
如果我在查询中说明aa_id的值,我会这样做
$sql = sprintf("select aa_id, bb_id from a_table where aa_id=191919");
,但是如果我把值放在url中,它就不会提取任何数据。
我不确定要在网上搜索什么,因为我不知道所谓的符号是什么(如果是)。如果有人可以告诉我代码可能有什么问题,或者在教程或文档中给我指示我应该在网上寻找的内容,我将不胜感激。也许有人可以推荐一个关于mysql,php和pdo的良好知识来源......提前谢谢。
答案 0 :(得分:1)
好吧,:indicator
不只是自动加载$_GET['indicator']
,你需要手动绑定它。
假设网址以?aa_id=191919
结尾,您的代码可能如下所示:
$sql = "select aa_id, bb_id from a_table where aa_id=:aa_id";
$res = $db->prepare($sql);
$res->bindValue(':aa_id', $_GET['aa_id'], PDO::PARAM_INT);
$res->execute();
$rows = $res->fetch(PDO::FETCH_ASSOC);
while($row=$res->fetch(PDO::FETCH_ASSOC))
{
print_r($row);
}