Php 传递参数以从url选择语句

Php 传递参数以从url选择语句,php,mysql,pdo,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_

我有一个数据库,有一个表,它有两列,比如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>";
}
,但如果我将值放在url中,它不会提取任何数据


我不确定在网上搜索什么,因为我不知道这个符号叫什么(如果是的话)。如果有人能告诉我代码有什么问题,或者在教程或文档中告诉我应该在网上查找什么,我将不胜感激。也许有人可以推荐一个关于mysql、php和pdo的好的知识来源。。。提前感谢。

嗯,是的,
:indicator
不只是自动加载
$\u GET['indicator']
,您需要手动绑定它

假设URL以,
?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);
}

你没有绑定这些值,是吗?你的sprintf是正确的?我缺少价值。sprintf(格式、值)是的,它有帮助。非常感谢。我要做的是使用while循环而不是foreach。它看起来是这样的:while($rows=$res->fetch(PDO::fetch\u ASSOC)…它排除了$rows=$res->fetch(PDO::fetch\u ASSOC)行。当我使用foreach时,它只给了我一行(第一行带有参数),而我提到的排除行的循环给了我没有第一行的行…只有我上面写的版本有效。谢谢。很高兴听到它!我也应该抓到其他东西。是的,你必须使用while来获取行。
$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);
}