0
因此,我最近開始學習PHP和PDO。當我閱讀一些教程時,我創建了一個包含2頁的簡單網站。 index.php
和single.php
。在索引頁面上,我從數據庫加載圖像(這已完成)。然後,當我點擊單張圖像時,請轉至顯示此圖像的single.php
(也是這樣做的)。現在我正在嘗試爲數據庫中的下一個和上一個圖像製作按鈕。我不太確定這是如何工作的,但在閱讀了一些教程後,我想我已經明白了。獲取上一個和下一個按鈕的工作
這是在其重定向到single.php
<a href="single.php?image_id='.$row['image_id'].'">
<img src="'.$row['image_name'].'"/>
</a>
這裏index.php
鏈路single.php
(的一部分)
if(isset($_GET['image_id']) && is_numeric($_GET['image_id']))
{
$image_id = $_GET['image_id'];
$result = $pdo->prepare("SELECT * FROM images WHERE image_id= ? LIMIT 1");
if ($result->execute(array($_GET['image_id'])))
{
if($row = $result->fetch())
{
$update = $pdo->prepare("UPDATE images SET image_hits = image_hits + 1 WHERE image_id = ?");
$update->bindParam(1, $_GET['image_id'], PDO::PARAM_INT);
$update->execute();
echo ' // image data ';
}
}
}
如果我理解正確的是如何工作的,我需要電流id應該是image_id
,下一個id和prev id。這聽起來很簡單..但不適合我。我有我需要這樣的東西,但問題是在哪裏以及如何將它實現到當前的代碼中?
$result = $pdo->prepare("SELECT image_id FROM images WHERE image_id > $image_id ORDER BY image_id ASC LIMIT 1");
if($result){
$next_id = $result->fetch();
}
//get previous picture id
$result = $pdo->prepare("SELECT image_id FROM images WHERE image_id < $image_id ORDER BY image_id DESC LIMIT 1");
if($result){
$prev_id = $result->fetch();
}
if($result){
//construct next/previous button
$prev_button = (isset($prev_id) && $prev_id>0)?'<a href="#" data-id="'.$prev_id.'"><img src="prev.png" /></a>':'';
$next_button = (isset($next_id) && $next_id>0)?'<a href="#" data-id="'.$next_id.'"><img src="next.png" /></a>':'';
謝謝你的答案。這部分代碼應該放在哪裏?在if語句之後if($ result-> execute(array($ _ GET ['image_id'])))還是別的地方? – Jared
'execute'中的輸入參數應該是一個assoc數組。密鑰應該與準備好的查詢字符串中的佔位符相匹配。例如,因爲我使用':image_id'作爲SQL字符串中的佔位符,所以我在執行中使用了'array(':image_id'=> $ image_id)'。您可以閱讀[相關文檔](http://php.net/manual/en/pdostatement.execute.php)以供進一步學習。 –
好的,我已經幾乎可以工作,但是next和prev鏈接存在問題。這就像'http:// localhost/sitefolder/2 /'應該是'http://localhost/single.php?image_id = 2'。我如何得到這個?我沒有.htaccess或可以重寫URL的東西? – Jared