将参数传递给来自url的select语句

时间:2015-04-12 00:50:20

标签: php mysql pdo

我有一个数据库,其中有一个表有两列,比如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的良好知识来源......提前谢谢。

1 个答案:

答案 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);
}