Php Can';t使用urldecode从数据库获取信息
我使用Php Can';t使用urldecode从数据库获取信息,php,mysql,urldecode,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($ro
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);
?>
memberID是数据库中的int字段还是字符串字段?如果是int字段,则删除profiles.php查询中的单引号。确保使用正确的memberId
与memberId
大小写。这是非常重要的
不要通过urldecode
传递从GET/POST检索到的值 我在代码中发现了几个问题:
members.php
while($row = $result->fetch_assoc()){
printf ('<li><a href="profiles.php?memberID=' . urlencode($row['memberID']) . '">' . $row['name'] . '</a></li>');
}
$id = isset($_GET['memberID']);
profiles.php
while($row = $result->fetch_assoc()){
printf ('<li><a href="profiles.php?memberID=' . urlencode($row['memberID']) . '">' . $row['name'] . '</a></li>');
}
$id = isset($_GET['memberID']);
在这里,您可以使用isset()函数返回值设置$id
。
您应该改为按如下方式设置GET参数的值:
while($row = $result->fetch_assoc()){
echo '<li><a href="profiles.php?memberID=' . urlencode($row['memberID']) . '">' . $row['name'] . '</a></li>';
}
if(isset($_GET['memberID'])) $id = $_GET['memberID'];
现在查看它是否工作。请根据您的代码尝试以下操作,并告知结果:
<?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";
}
?>
profiles.php中的var\u dump($query)
,然后执行。profiles.php中的echo$query
的结果是什么?memberID
!=memberId
@OneTrickPony将此作为答案发布。我通过Ctrl键查找变量的输入错误,但它忽略了大小写@萨克伦。您必须使用IE。Opera有一个匹配大小写的选项:)谢谢:)。所以它应该是$id=$\u GET['memberID']
?@PAHemingstam通常更喜欢使用$id=isset($\u GET['memberID'])?修剪($\u GET['memberID']):null
。您没有启用magic\u quotes\u gpc
是吗?array(1){[“memberId”]=>string(1)“2”}
有趣。从我所能看到的,我把它拼写成了现在代码中的memberID
,这是我的错误。它说,array(1){[“memberID”]=>string(1)“2”}
MySQL将在必要时自动将字符串转换为整数,这个答案是错误的。请将这个(如php.net/manual/en/function.ini set.php所示)放在页面的开头,并告诉我们是否有新的显示:ini_set('display_errors',1');或者在每个变量之后和while循环之后放置一个echo语句,然后查看显示了多少echo语句。它表示1(成员名称)