将参数从 url 传递给 select 语句
passing parameter to select statement from url
我有一个带有 table 的数据库,它有两列,比方说 aa_id 和 bb_id - 每一列都是与另一个 [=35] 相关的外键=] 并且两列都为此特定的 table 创建了一个复合键。有几行包含相同的 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 的良好知识来源...在此先感谢。
嗯,是的,:indicator
不会自动加载到 $_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);
}
我有一个带有 table 的数据库,它有两列,比方说 aa_id 和 bb_id - 每一列都是与另一个 [=35] 相关的外键=] 并且两列都为此特定的 table 创建了一个复合键。有几行包含相同的 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 的良好知识来源...在此先感谢。
嗯,是的,:indicator
不会自动加载到 $_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);
}