我知道这里有一些基本盯着我的东西。我可以在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';
}
?>
我整天都花在这上面,这将教会我一个教训,认为这是操作的一个简单部分。任何帮助将不胜感激。
答案 0 :(得分:0)
$_Get
应为$_GET
:
更改
$Key = $_Get['Key'];
要
$Key = $_GET['Key'];
并且,回答有更好的方法我应该这样做吗?:
您正在使用PDO:好
您正在使用带有bindValue的预准备语句进行用户输入:好
在尝试使用之前,您需要检查用户输入是否存在:好
您正在使用$Key = "Oops";
代替无密钥:不好,这会转换为1的整数值。
我说你做得对,我做的主要不同的是:我会将我的数据库逻辑放在别处(单独的文件/类),因为我不喜欢混合显示逻辑与数据库逻辑。但是,这是一个设计决定,而不是你做错了。