PDO如何传递ID密钥

时间:2014-08-17 08:44:17

标签: mysql pdo

我知道这里有一些基本盯着我的东西。我可以在mysql中执行此操作但在PDO中我无法获取行的Key(id)以传递到下一页。当用户点击"更多细节"在一行中,我希望它打开一个页面,其中包含该行的所有详细信息以及完整尺寸的照片。它正在打开页面,将Key =(正确的数字)放在地址栏中并写入"没有找到行"在页面中。我做错了什么,是否有更好的方法来做这件事?

此页面包含搜索中的行:

 <?php
  $STM = $dbh->prepare("SELECT * FROM engravers WHERE Country = :Country");
  if(isset($_POST['dropdown'])){
  $Country = $_POST['dropdown'];
  }else{
  $Country = "Australia";
  }

 $STM->bindParam(':Country', $Country, PDO::PARAM_STR);
 $STM->execute();                    
 $row= $STM->fetchAll();
 $img_url = "http://www.engravedstamps.net/images/";
 if(count($row)){
 echo "<table border='1' cellpadding='0>";

 foreach($row as $data){
         $Key = $data['Key'];
         echo "<tr><th>Key</th><th>Country</th><th>Year</th><th>Description</th><th>Image</th>     </tr>";
         echo "<tr><td>".$data['Key']."</td>";
          echo "<td>".$data['Country']. "</td>";
          echo "<td>".$data['Year']."</td>";
           echo "<td>".$data['Description']."</td>";
           echo "<td>"."<img src='$img_url".$data['Images']."'<br /><br />"."</td>";
     ?>

    <td><a href="more.php?Key=<? echo $data['Key'];?>">More Details</td>
            <?

    echo "</tr>";
     }
     }else {
     echo 'no row found';
     }
     ?> 

该页面似乎有效,应将Key传递给此页面,这基本上是之前的一个重新设置。我还没有在底部重建桌子。

 <?php

 $STM = $dbh->prepare("SELECT * FROM engravers WHERE Key = :Key");
 if(isset($_GET['Key'])){
 $Key = $_Get['Key'];
 }else{
 $Key = "Oops";
 }

 $STM->bindParam(':Key', $Key, PDO::PARAM_INT);
 $STM->execute();                    
 $row= $STM->fetchAll();
 $img_url = "http://www.engravedstamps.net/images/";
 if(count($row)){

 echo "<table border='1' cellpadding='0>";

 foreach($row as $data){
                 echo "<tr><th>Key</th><th>Country</th><th>Year</th><th>Description</th><th>Image</th>   </tr>";
         echo "<tr><td>".$data['Key']."</td>";
          echo "<td>".$data['Country']. "</td>";
          echo "<td>".$data['Year']."</td>";
           echo "<td>".$data['Description']."</td>";
           echo "<td>"."<img src='$img_url".$data['StampImages']."'<br /><br />"."</td>";
            echo "</tr>";
     }
     }else {
     echo 'no row found';
     }

     ?> 

我整天都花在这上面,这将教会我一个教训,认为这是操作的一个简单部分。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

当您复制密钥时,

$_Get应为$_GET

更改

$Key = $_Get['Key'];

$Key = $_GET['Key'];

并且,回答有更好的方法我应该这样做吗?

您正在使用PDO:好

您正在使用带有bindValue的预准备语句进行用户输入:好

在尝试使用之前,您需要检查用户输入是否存在:好

您正在使用$Key = "Oops";代替无密钥:不好,这会转换为1的整数值。

我说你做得对,我做的主要不同的是:我会将我的数据库逻辑放在别处(单独的文件/类),因为我不喜欢混合显示逻辑与数据库逻辑。但是,这是一个设计决定,而不是你做错了。