PHP没有发送id

时间:2011-08-24 20:21:11

标签: php mysql

我编写了一个脚本,用于根据uniqueID

查找ID
if ($_REQUEST['uniqueId'] != ""){
$qA = "SELECT id FROM customerdata WHERE uniqueId = \"". $_REQUEST['uniqueId']."\"";
$rA = mysql_query($qA);
list($id) = mysql_fetch_row($rA);
echo $id;
exit;

if ( mysql_num_rows ($rA) > 0) {

header('Location:response-en.php?id=$id');

    }
else
{
 header('Location:not-found.php');  
}
}

不是将用户发送到response-en.php?id = 1,而是将它们发送到response-en.php?id = $ id

知道为什么会这样吗?任何帮助将不胜感激!谢谢!

5 个答案:

答案 0 :(得分:2)

使用:     header('Location:response-en.php?id='.$id);

当您使用单引号时:'

这是一个字符串文字。该字符串中的所有内容(我指的是一切)都是批发的。如果您执行此操作:$something = 'Location:response-en.php?id=$id';$something的值为:Location:response-en.php?id=$id要将变量添加到字符串中,请使用连接运算符.。因此,$something之后$something = 'Location:response-en.php?id='.$id;的值为Location:response-en.php?id=5(假设$ id = 5) 请参阅:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single

使用双引号:“

PHP将在你的sting中搜索以找到任何变量。然后它将使用变量的值替换变量名称。如果您这样做:$something = "Location:response-en.php?id=$id";,则$something的值为:Location:response-en.php?id=5 - 请注意使用双引号。 请参阅:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double

另外,我想补充一点,您的脚本容易受SQL-injection attack攻击。始终在SQL查询中使用它们之前清理查询字符串值。有关清理sql值的详细信息,请参阅mysql_real_escape_string的文档。

答案 1 :(得分:2)

不会解析单引号字符串中的变量。双引号内的变量是。退房:

http://www.php.net/manual/en/language.types.string.php

答案 2 :(得分:0)

您需要双引号来处理字符串中的变量。不是单引号。

答案 3 :(得分:0)

请尝试用双引号而不是单引号括起您的字符串以进行正确的变量解析:

"Location:response-en.php?id=$id"

或使用complex syntax围绕变量的大括号:

"Location:response-en.php?id={$id}"

请参阅manual

答案 4 :(得分:0)

您必须使用"代替'

header("Location:response-en.php?id=$id");

或:

header('Location:response-en.php?id='.$id);