php 参数传递问题($_GET('id'))

我做了两个页面,目标是想通过第一个页面链接到第二个页面查看具体内容,但传递id的时候第二个页面只显示表单的最后一个内容,麻烦哪位帮我看看好吗?坐等回答,如果能帮我解决问题... 我做了两个页面,目标是想通过第一个页面链接到第二个页面查看具体内容,但传递id的时候第二个页面只显示表单的最后一个内容,麻烦哪位帮我看看好吗?坐等回答,如果能帮我解决问题还有追加
ceshi.php
<?
include("conn.php");
$SQL="SELECT * FROM message order by id desc";
$query=mysql_query($SQL);
while($row=mysql_fetch_array($query)){
?>
<a href=ceshi2.php?id=<?=$row['id']?> ><?=$row['user']?></a>
<?
}
?>

ceshi2.php
<?php
/*
* Created on 2011-9-17
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
include("conn.php");
$SQL="select * from message where id=".$_GET['id'];
$SQL="SELECT * FROM message order by id desc";
$query=mysql_query($SQL);
$row=mysql_fetch_array($query);
print_r($row);
?>
展开
 我来答
naruco
推荐于2018-03-28 · TA获得超过639个赞
知道小有建树答主
回答量:807
采纳率:50%
帮助的人:537万
展开全部
我自己测试了一下,到是没出现你这样的问题;
感觉上可能问题出在"SELECT * FROM message where id=".$_GET['id'] 这一语句上;
我的测试代码:(用DEDECMS数据库测试的)
<?php
$cfg_dbhost = 'localhost';
$cfg_dbname = 'dedecmsv57utf8';
$cfg_dbuser = 'root';
$cfg_dbpwd = '';

$conn = mysql_connect($cfg_dbhost,$cfg_dbuser,$cfg_dbpwd);

mysql_select_db($cfg_dbname);

$rs = mysql_query('select * from dede_area',$conn);
while( $row = mysql_fetch_array($rs) ){
//print($row['id']." - ");
//print($row['name']."<br />");
?>
<a href="?id=<?php echo $row['id'];?>" ><?php echo $row['name'];?></a>
<?php
}

$id = $_GET['id'] ? $_GET['id'] : 1; //加上这一句我看挺有必要的,可以防止undefinde index的错误发生。个人感觉比直接在查询语句中使用$_GET安全可靠得多。
$rs = mysql_query("select * from dede_area where id = ".$id,$conn);
$row = mysql_fetch_array($rs);
print($row);
?>

再回头看你的问题描述,以及你的代码,感觉楼上说重复赋值的原因就有道理了。
$SQL被你重复赋值后的值为"SELECT * FROM message order by id desc",在执行查询后,返回的是message这张表的全部数据,并且按倒序排列。
所以你无论怎么传值,都只得到该表的最后一行的数据。
追问
非常感谢,但我还是想问最后一个问题,你加上的那句如果是$id = $_GET['id']  我能理解,但完整的$id = $_GET['id'] ? $_GET['id'] : 1;我就看不懂了,能给我解释下吗?
追答
这是个判断语句的简写模式,表示当$_GET['id'] 为真时,将$_GET['id'] 赋值给$id, 否则将1赋值给$id;
少能053
2011-09-17 · TA获得超过235个赞
知道小有建树答主
回答量:405
采纳率:0%
帮助的人:253万
展开全部
其实 我没怎么看懂你要问什么
ceshi2.php页面
$SQL="select * from message where id=".$_GET['id'];
$SQL="SELECT * FROM message order by id desc";
你为什么写2个sql 而且声明的变量名一样,
这样 第二个会把第一个$SQL覆盖掉,你传不传id 查得都是所有数据

补充:只查最后一个的话可以这样
select * from message order by id desc limit 1
我先按照id降序排列 然后只取第一条。
另一种就是你写的这种也能实现,就是mysql_fetch_array 不放在while里面 就循环一次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cashflowgame
2011-09-17 · TA获得超过814个赞
知道小有建树答主
回答量:1336
采纳率:0%
帮助的人:1053万
展开全部
$SQL="select * from message where id=".$_GET['id'];
$SQL="SELECT * FROM message order by id desc";
重复赋值了吧
追问
不是这个原因,还是不行啊,提示的是Notice:undefinde index。再说虽然是重复赋值但不冲突啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风吹风雨夜雨
2011-09-17 · TA获得超过181个赞
知道小有建树答主
回答量:482
采纳率:0%
帮助的人:315万
展开全部
$row=mysql_fetch_array($query); 没while的会 就只有一个数组~~
如多个 就需要while下~
更多追问追答
追问
不是,我的目的是通过第一个页面的链接链接到一个具体的id上去,我不要遍历数组
追答
哦 看错了 
$SQL="select * from message where id=".$_GET['id'];
$SQL="SELECT * FROM message order by id desc";
$query=mysql_query($SQL);
你这的mysql语句问题 两个查询 只有最后一个起作用了 就是SELECT * FROM message order by id desc
而get[id]那个没起作用 所以查询了message 所有的数据 但没while就只显示了message 的最后一条
把$SQL="SELECT * FROM message order by id desc";注释了
//$SQL="SELECT * FROM message order by id desc";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式