2014-03-14 39 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