Mysql PDO如何传递ID密钥

Mysql PDO如何传递ID密钥,mysql,pdo,Mysql,Pdo,我知道这里有一些基本的东西在盯着我看。我可以在mysql中这样做,但在PDO中,我无法获得一行的Keyid以传递到下一页。当用户单击某一行的更多详细信息时,我希望它打开一个包含该行所有详细信息以及全尺寸照片的页面。它当前正在打开页面,将Key=正确的数字放入地址栏,并在页面中未写入任何行。我做错了什么?有没有更好的方法 此页面包含搜索中的行: <?php $STM = $dbh->prepare("SELECT * FROM engravers WHERE Country =

我知道这里有一些基本的东西在盯着我看。我可以在mysql中这样做,但在PDO中,我无法获得一行的Keyid以传递到下一页。当用户单击某一行的更多详细信息时,我希望它打开一个包含该行所有详细信息以及全尺寸照片的页面。它当前正在打开页面,将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';
     }
     ?> 
该页面似乎工作,并应手的关键,这是一个基本上是一个重新调整前一页。我还没有重建底部的桌子

 <?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';
     }

     ?> 
我花了一整天的时间在这上面,这会给我一个教训,让我觉得这只是手术的一个简单部分。任何帮助都将不胜感激。

$\u-Get在复制密钥时应为$\u-Get:

改变

$Key = $_Get['Key'];

那么,有没有更好的方法来解决这个问题呢

你在用PDO:很好

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

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

您正在使用$Key=Oops;在替换“无键:不好”时,这将转换为整数值1


我想说你做得对,我要做的主要不同的事情是:我会让我的数据库逻辑在别处单独的文件/类,因为我不喜欢混合显示逻辑和数据库逻辑。然而,这是一个设计决策,而不是你做错了什么。

你的代码太乱了,我通过了它的全部部分。不知道可能是帮助$Key=$\u获取['Key'];必须是$Key=$\u GET['Key'];我一整天都在盯着它,但不幸的是,修复它并没有改变结果。该死!我想就是这样。试着做一个var_dump$Key;在使用它之前。也可以尝试报告所有错误;var_dump给我一个消息string1 4找不到行。它可能来自上一页。我刚刚注意到打印的表格缺少每个国家的第一个条目。因为我只是想在这里打印一行代码,代码非常相似,所以问题看起来是一样的。如果我能看到它,那就糟了。4是所单击行的键。我在其他帖子上的阅读表明,我不能以这种方式绑定键,因为它是$\u Get值,也是列的名称。您是否尝试过直接将其强制转换为整数?我假设使用PDO::PARAM_INT将强制强制转换。Fe$Key=int$_GET['Key'];
$Key = $_GET['Key'];