0

こんにちは私は何日もこれを解決しようとしてきたので、うまくいけば誰かが答えを知っています。

スクリプトの上部で、次のような変数を動的に設定します。 $p_id = $_GET['p_id'];

次に、この変数を次の関数に3つの異なる方法で渡すことを試みましたが、運がありませんでした。

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)機能しますが、他の3つの変数は関数から見えなくなります。

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());...

どのアプローチを試しても、関数は変数を認識しません。何か案は?ありがとう

4

2 に答える 2

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、関数の外でも使用される変数だからです。

EDIT$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);
于 2012-06-17T01:17:13.403 に答える
1

新しい変数を作成してメモリを浪費しているだけです。

$_GET['p_id']はどのスコープからでもアクセスできるため、アクセスしている場所ならどこでも自動的に表示されます。これは、通常の変数を渡そうとするよりもはるかに簡単です。

于 2012-06-17T01:09:48.027 に答える