访问不同功能的变量

时间:2014-10-19 21:58:01

标签: php

所以这是我的代码

function func_readmsg () {
    $targetmessage = $_POST['inquiry_no'];
    $result = mysqli_query(mysqli_connect("localhost", "root", "", "dbbyahenijuan"),
         "SELECT * FROM tblinquiry where finquiry_no='$targetmessage' ");
    while($row = mysqli_fetch_array($result)) {
        global $sender, $message, $date;
        $sender = $row['ffull_name'];
        $message = $row['fmessage'];
        $date = $row['fdate'];
    }
    echo "
    <script>
        $(document).ready(function(){
            $('#messagewindow').fadeIn('show');
        });
    </script>";
}

function func_delmsg () {
    echo $targetmessage;
}

我需要从$targetmessage转移或读取func_readmsg的值到func_delmsg。 我已经尝试过$GLOBALS['targetmessage']global $targetmessage。请帮忙。

5 个答案:

答案 0 :(得分:0)


在任何php函数之外声明你的变量$targetmessage;,当你想在函数内部访问R / W的这个变量时,你必须这样做global $targetmessage;

答案 1 :(得分:0)

您可以将变量传递给另一个函数或使它们成为类的一部分:

<?php
class MessageClass
    {
        public $targetmessage;

        public function func_readmsg() {
            $this->targetmessage = $_POST['inquiry_no'];
            $result = mysqli_query(mysqli_connect("localhost", "root", "", "dbbyahenijuan"),
                 "SELECT * FROM tblinquiry where finquiry_no='".$this->targetmessage."'");
            while($row = mysqli_fetch_array($result)) {
                global $sender, $message, $date;
                $sender = $row['ffull_name'];
                $message = $row['fmessage'];
                $date = $row['fdate'];
            } ?>
             <script>
                    $(document).ready(function(){
                        $('#messagewindow').fadeIn('show');
                    });
             </script><?php
        }

        public  function func_delmsg() {
            echo $this->targetmessage;
            }
    }

// To implement
$reader = new MessageClass();
// Function 1
$reader->func_readmsg();
// Function 2
$reader->func_delmsg(); ?>

答案 2 :(得分:0)

是在会话中吗?使用会话变量。 $ _SESSION [ 'targetmessage'];

答案 3 :(得分:0)

通常的做法是将消息作为参数传递给您的函数:

$targetmessage = $_POST['inquiry_no'];

// run func_readmsg on $targetmessage
func_readmsg($targetmessage);

// now do something else with it
func_delmsg($targetmessage);


function func_readmsg ($message) {
    // do stuff with $message
}

function func_delmsg ($message) {
    echo $message;
}

PHP手册中有大量关于how to write functions and use arguments的文档。

答案 4 :(得分:0)

您可以使用global variable。在两个函数的开头添加global $targetmessage;。注意副作用:该变量也可以从其他地方访问。

不要忘记在第二个之前拨打第一个,否则$targetmessage将无法定义。

示例:

function foo()
{
    global $var;
    $var = 'foo';
    var_dump($var);
}
function bar()
{
    global $var;
    var_dump($var);
}

foo();
bar();

最后的注释

您实际应该使用参数而不是全局变量:function func_readmsg($targetmessage)function func_delmsg($targetmessage),然后在调用函数时将$targetmessage的值作为参数传递。


发现SQL注入:

"SELECT * FROM tblinquiry where finquiry_no='$targetmessage' "

如果$_POST['inquiry_no']' OR 1='1,该怎么办?