无法使用urldecode从数据库中获取信息

时间:2013-02-07 03:46:02

标签: php mysql urldecode

我使用urldecode从以前的网站接收会员ID。 URL中显示正确的ID但我无法从数据库中获取信息。

members.php:

   <?php


$query = "SELECT name, memberID FROM members";

if(!$result = $db->query($query)){
    die('There was an error running your query[' . $db->error . ']');
}

while($row = $result->fetch_assoc()){
  printf ('<li><a href="profiles.php?memberID=' . urlencode($row['memberID']) . '">' . $row['name'] . '</a></li>');

}
?>

profiles.php:

  <?php

$id = isset($_GET['memberID']);

$query = "SELECT * FROM members WHERE memberID = '".$id."'";

if ($result = $db->query($query)) {

while ($row = $result->fetch_assoc()){
    printf("%s (%s)\n", $row["memberID"], $row['name']);
}
}
 var_dump($query);
?>

我得到的只是一个空白屏幕。

4 个答案:

答案 0 :(得分:1)

确保使用memberIdmemberID的正确大小写。这非常重要。

通过urldecode传递从GET / POST检索到的值。 They already are

答案 1 :(得分:1)

我在代码中发现了几个问题:

<强> members.php

while($row = $result->fetch_assoc()){
  printf ('<li><a href="profiles.php?memberID=' . urlencode($row['memberID']) . '">' . $row['name'] . '</a></li>');

}

您正在使用printf函数,该函数具有格式字符串的第一个参数。 使用echo语句更正如下:

while($row = $result->fetch_assoc()){
  echo '<li><a href="profiles.php?memberID=' . urlencode($row['memberID']) . '">' . $row['name'] . '</a></li>';

}

<强> profiles.php

$id = isset($_GET['memberID']);

这里使用isset()函数返回值设置$id。 您应该从GET参数中设置值,如下所示:

if(isset($_GET['memberID']))    $id = $_GET['memberID'];

现在看看它是否有效。

答案 2 :(得分:0)

请根据您的代码尝试以下操作,并告知我们结果:

<?php
$id = isset($_GET['memberID']) ? $_GET['memberID'] : 0;
if($id > 0){
    $query = "SELECT * FROM members WHERE memberID = '".$id."'";
    $result = $db->query($query);
    if($result){
        echo "Rows found: " + $result->num_rows;
    } else {
        echo "No rows found";
    }
} else {
    echo "memberID is 0";
}
?>

答案 3 :(得分:-1)

memberID是数据库中的int字段还是字符串字段?如果是int字段,则在profiles.php上删除查询中的单引号。