我有这个代码允许我将变量传递给另一个页面,但问题是我似乎无法使用链接获取该变量。我们以前尝试过,同样的方法并且有效..你能检查一下吗?
谢谢..
链接:
$sql="SELECT * FROM pianificazione";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
?>
<a href="lista_attivita.php?&id=<?php echo $row['job_id'] ; ?>"><?php echo $row['job'] ?></a>
<?php echo '</br><br />'; }
?>
链接后的页面:
include('menu.php');
$id=$_GET['job_id'];
$sql="SELECT * FROM attivita WHERE job_id='$id'";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
?>
<a href="lista_attivita.php?&id=<?php echo $row['att_id'] ?>"><?php echo $row['attivita_da_promuovere'] ?>-<?php echo $row['attivita_tip_merc'] ?>-<?php echo $row['attivita_da_svolgere'] ?>-<?php echo $row['attivita_tip_personale'] ?></a>
答案 0 :(得分:3)
您应该使用:
$id = $_GET['id'];
您也可以使用SQL注入...将其解析为INT:
$id = (int) $_GET['id'];
...或者使用带有PDO的预准备语句(而不是您正在使用的默认mysql函数,不再推荐使用它们。)
答案 1 :(得分:1)
你将它传递给:
lista_attivita.php?&id=<?php echo $row['job_id'] ; ?>
然后将其视为:
$id=$_GET['job_id'];
您应该使用:
$id=$_GET['id'];
答案 2 :(得分:0)
在您传递到“链接后页面”的网址中,您将“?id = xxx”设置为参数,但在您的脚本中,您正在寻找“job_id”。
在第一个脚本中将参数更改为?job_id =。
答案 3 :(得分:0)
两件事。
1)功能性
$id=$_GET['job_id'];
应该是
$id=$_GET['id'];
因为你的链接传递了变量id,而不是job_id:
lista_attivita.php?&**id**=<?php echo $row['job_id']
2)安全
从不,永远不要将用户输入数据直接插入SQL查询。你要求头痛或更糟。在进行任何查找之前,应验证并转义接收页面上的$ id。如果您需要一个号码,请在接收页面上执行以下操作:
if (!is_numeric($_GET['id']))
{
// throw error
}
查询数据库中的有效代码,将它们放入数组中,然后检查该数组以查看是否找到了传递的值,这不是一个坏主意。这可以防止用户输入的数据到达您的数据库。
这样的事情:
$q = "SELECT DISTINCT(id) FROM my_table WHERE display=1 ORDER BY id ASC";
$res = mysqli_query($dbx,$q);
while (list($_id) = mysqli_fetch_array)
{
$arr_valid_id[] = $_id;
}
然后,
if (in_array($_GET[id],$arr_valid_id[])
{
// do stuff
} else {
// throw error
}