嗨,我一直在努力解决这个问题,所以希望有人知道答案。
在我的脚本顶部,我动态设置一个变量,如下所示:
$p_id = $_GET['p_id'];
然后我尝试以三种不同的方式将此变量传递给以下函数,但没有任何运气。
1)
public function Insert_Update($uid,$update,$uploads,**$p_id**)
{
.....
$query = mysql_query("INSERT INTO `messages` (message, uid_fk, poster_id,ip,created,uploads) VALUES ('$update', '$uid',
**'$p_id'**, '$ip','$time','$uploads')") or die(mysql_error());....
有趣的是,如果我将参数的顺序更改为($p_id,$uid,$update,$uploads)
,则此方法适用于变量,但其他三个变量对函数不可见。
2)
public function Insert_Update($uid,$update,$uploads)
{...
// ... global **$p_id**;
$query = mysql_query("INSERT INTO `messages` (message, uid_fk, poster_id,ip,created,uploads) VALUES ('$update', '$uid',
**'$p_id'**, '$ip','$time','$uploads')") or die(mysql_error());....
3)
public function Insert_Update($uid,$update,$uploads)
{
....
// $query = mysql_query("INSERT INTO `messages` (message, uid_fk, poster_id,ip,created,uploads) VALUES ('$update', '$uid',
'".$_REQUEST[**'p_id'**]."', '$ip','$time','$uploads')") or die(mysql_error());...
无论采用何种方法,我都会尝试使用该功能。有任何想法吗?感谢
答案 0 :(得分:2)
不要只使用$p_id = $_GET['p_id'];
,而是确保$_GET['p_id']
具有值。请尝试以下代码:
$p_id = isset($_GET['p_id'])? $_GET['p_id'] : "some default value";
或者,如果您想在未设置变量时抛出错误,请尝试以下操作:
if(isset($_GET['p_id']))
{
$p_id = $_GET['p_id'];
}
else
{
echo "Please set 'p_id' and try again.";
exit();
}
此外,作为一般经验法则,如果可能,请避免在其外部定义的函数中使用相同的变量名称。例如。在您的函数中尝试将其命名为$pid
而不是$p_id
,因为这也是在函数外部使用的变量。
修改强>
而不是将$p_id
定义为常量,然后将其添加到$GLOBALS
数组,然后将其传入,只需确保设置$p_id
,然后将其传入。例如:
$p_id = isset($_GET['p_id'])? $_GET['p_id'] : 2;
public function Insert_Update($uid,$update,$uploads,$pid)
{
.....
$query = mysql_query("INSERT INTO `messages` (message, uid_fk, poster_id,ip,created,uploads) VALUES ('$update', '$uid',
'$pid', '$ip','$time','$uploads')") or die(mysql_error());....
}
Insert_Update(1, "some text", "some file", $p_id);
答案 1 :(得分:1)
你只是通过创建一个新变量来浪费记忆。
$_GET['p_id']
可在任何范围内访问,因此无论您在何处访问它,它都会自动显示。这比尝试将常规变量传递给它要容易得多。