SQL,php pdo和检索表行

时间:2013-01-23 15:14:54

标签: php html sql pdo

我现在有一个非常大的问题,我无法找到解决方案,所以我希望得到一些帮助。

我使用以下查询从表中选择特定列

$stmt = $db->prepare('SELECT Info FROM Info;');
$stmt->execute();
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);

然后我用php输出它

<div id="two">
<?php
if(!$resTwo)
echo"No Content Available Yet..";
else
echo "<ul>";
foreach($resTwo AS $val) {
echo "<tr>";
foreach($val AS $val1) {
    echo "<td>$val1</td>";
  }
}
echo "</ul>";
$db = null; 
?>
</div> 

现在问题来了。这个脚本适用于一个页面,但问题是我有几个看起来完全相同的页面,唯一不同的是我从db添加的内容。所以我更愿意,如果我可以避免在每个页面中编写一个新脚本,而是使用上面所做的SELECT的某种索引。

如果我想解决这个问题,我将不得不每页更改以下内容

$stmt = $db->prepare('SELECT Info FROM Info WHERE rowid = 1;');
$stmt = $db->prepare('SELECT Info FROM Info WHERE rowid = 2;');
$stmt = $db->prepare('SELECT Info FROM Info WHERE rowid = 3;');
$stmt = $db->prepare('SELECT Info FROM Info WHERE rowid = 4;');

...

2 个答案:

答案 0 :(得分:2)

您可以通过$ _GET或$ _POST获取参数并在查询中使用它。参见:

$var = $_GET['id'];
$stmt = $db->prepare('SELECT Info FROM Info WHERE rowid = :RowId');
$stmt->bindParam(":RowId", $var, PDO::PARAM_INT);
$stmt->execute(); $res = $stmt->fetchAll(PDO::FETCH_ASSOC);

答案 1 :(得分:1)

  • 添加php函数并在common.php中添加以下代码:

    <php    
    
    function getRowContentResultSet($rowId)
    {
    
        $stmt = $db->prepare('SELECT Info FROM Info WHERE rowid = :rowId');
        $stmt->execute(array(':rowId' => $rowId));
        $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
        return $res;
    }
    
    ?>
    
  • 将此功能(common.php)包含在所有页面(或页面组)中。

  • 然后在每个页面中按以下格式调用此函数。

    $resTwo = getRowContentResultSet($_GET['rid']);
    
  • 所有页面网址都应包含GET参数“rid” 例如:http://yoursite.com/page.php?rid=1

注意:我没有改变你的html部分。即便如此,您也可以放入一个常见的template.php,并将其包含在您的页面中。