我使用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);
?>
我得到的只是一个空白屏幕。
答案 0 :(得分:1)
确保使用memberId
与memberID
的正确大小写。这非常重要。
不 通过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上删除查询中的单引号。