为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕斯王 2019-02-20 18:14:29
php 参数传递问题($_GET('id'))
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

我自己测试了一下,到是没出现你这样的问题;
感觉上可能问题出在"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这张表的全部数据,并且按倒序排列。
所以你无论怎么传值,都只得到该表的最后一行的数据。




查看完整回答
反对 回复 2019-03-02
?
慕慕森

TA贡献1856条经验 获得超17个赞


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里面 就循环一次



查看完整回答
反对 回复 2019-03-02
  • 2 回答
  • 0 关注
  • 505 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信