2014-03-14 62 views
0

* 固定 ** * *

echo "<li><a href=\"product_display?id=$id\">" . $row['iname'] . "</a></li>"; 

缺什麼?

.PHP

/捂臉


我似乎無法得到id值傳遞給$ _GET。我嘗試添加會話和各種東西。

即使我只是自己做一個print_r($GET)它給了我:

的網頁沒有正確重定向

的Firefox已經檢測到服務器重定向對 這個地址的請求永遠不會完成的方式

這不是生產,但一個項目,所以我不擔心注射等.. 我已經使用GET ld php mysql的語法和它的工作原理,只是不知道是什麼問題。阿洛斯沒有代碼是野蠻的,所以任何幫助將不勝感激。

第1頁:

<?php 
require('lib/inc/db_inc.php'); 

$sql = "SELECT items.itemID, items.iname, items.idesc, items.iprice,iimg.imgURL FROM items JOIN iimg ON items.itemID = iimg.pid WHERE items.itype = 'usb_controllers'"; 

$stmt = $db->query($sql); 

while ($row = $stmt->fetch()){ 

$id = $row['itemID']; 

echo "<div class=\"prodMain\">"; 
echo "<div class=\"img\">"; 
echo "<a href=\"#\"><img src=\"" . $row['imgURL'] ."\"/></a>"; 
echo "</div>"; 
echo "<ul>"; 
echo "<li><a href=\"product_display?id=$id\">" . $row['iname'] . "</a></li>"; 
echo "<li><a href=\"#\">" . $row['idesc'] . "</a></li>"; 
echo "<li><a href=\"#\">" . $row['iprice'] . "</a></li>"; 
echo "</ul>"; 
echo "</div>"; 
} 
?> 

第2頁:

<?php 
require('../lib/inc/db_inc.php'); 
if (!isset($_GET['id'])) { 
    die("missing query parameter"); 
} 
$id = intval($_GET['id']); 
if ($id === '') { 
    die("Invalid query parameter"); 
} 

$sql = "SELECT items.itemID, items.iname, items.idesc, items.iprice,iimg.imgURL FROM items JOIN iimg ON items.itemID = iimg.pid WHERE itemID = '$id'"; 

$stmt = $db->query($sql); 

$row = $stmt->fetch(); 

echo print_r($row); 
?> 

db_inc.php

<?php 
try { 
    $db = new PDO('mysql:host=******;dbname=*****', '*********', '********'); 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 
?> 
+0

這樣工作嗎? :<?php print_r($ _ GET)?> – Amnon

+0

根據此頁面 - http://kb.mozillazine.org/The_page_isn't_redirecting_properly - 當您的頁面在無限循環中重定向您時,該消息到期。如果這是您的頁面中的所有代碼,請檢查'../ lib/inc/db_inc.php'以獲取無限循環。最有可能缺少一個右括號'}'或一個永不增加的for循環。 – Sean

+0

這沒有奏效。 – Mars

回答

0

本聲明

$sql = "SELECT items.itemID, items.iname, items.idesc, items.iprice, iimg.imgURL FROM items JOIN iimg ON items.itemID = iimg.pid WHERE itemID = '$id'"; 
$stmt = $db->query($sql); 

有一個漏洞對於SQL注入。請參閱here
所以你應該改寫它像

$sql = "SELECT items.itemID, items.iname, items.idesc, items.iprice, iimg.imgURL FROM items JOIN iimg ON items.itemID = iimg.pid WHERE itemID = ?"; 
$stmt = $db->prepare($sql); 
$stmt->execute(array($_GET['id'])); 
+2

我不認爲這回答了這個問題(爲什麼不是$ _GET爲他們工作),這個問題明確表示他們並不擔心注射。話雖如此,提醒並沒有受到傷害,但我相信一個評論會比答案更適合這一點。 –

+0

好點,但這不是問題的答案。 – Jonast92

+0

感謝這個提示! – Mars