-5

我有一个类文件,在类文件中有一些代码。如何跨多个页面共享代码。该代码解决了在使用准备好的语句时获取结果集的使用

代码是这样的。如何重用函数 mps_fetch_assoc。我只想要一个地方的代码。

<?php

//http://localhost:8080/altenaontw/index.php?-action=showclient
class actions_showclient
{

    // find here http://www.meetup.com/austinphp/messages/boards/thread/2022681
    private function mps_fetch_assoc(&$stmt)
    {
        $meta = $stmt->result_metadata();
        $retval[] = &$stmt;
        $tmp;
        $names;
        while ($field = $meta->fetch_field())
        {
            $names[] = $field->name;
        }
        $tmp = $names;
        for ($c = 0; $c < count($names); $c++)
        {
            $retval[] = &$tmp[$c];
        }
        call_user_func_array("mysqli_stmt_bind_result", $retval);
        if ($stmt->fetch())
        {
            $assoc_array;
            for ($c = 0; $c < count($names); $c++)
            {
                $assoc_array[$names[$c]] = $retval[$c + 1];
            }
            return $assoc_array;
        }
        else
        {
            return FALSE;
        }
    }

    function handle($params)
    {
        header('Content-type: text/json; charset="UTF-8"');
        $user = Dataface_AuthenticationTool::getInstance()->getLoggedInUser();
        if (!$user)
        {
            return Dataface_Error::permissionDenied("U heeft geen toegang tot deze actie.");
        }

        $db = Dataface_Application::getInstance()->_conf['_database'];
        echo ($db['host']);

        //$mysqli = new mysqli($db['host'], $db['user'], "", $db['name']);
        $mysqli = mysqli_connect($db['host'], $db['user'], "", $db['name']);
        /* check connection */
        if ($mysqli->connect_errno)
        {
            printf("Connect failed: %s\n", $mysqli->connect_error);
            exit();
        }

        $sql = 'SELECT * from client';
        $stmt = $mysqli->prepare($sql);
        if ($stmt)
        {
            $result = $stmt->execute();
            if (!$result)
            {
                echo "[" . json_encode(array('dberror' => 'db_error:' . mysql_error())) . "]";
                return;
            }

            $rows = array();
            while ($row = $this->mps_fetch_assoc($stmt))
            {
                $rows[] = $row;
            }

            print json_encode($rows);
            $mysqli->close();
        }
    }

}

?>
4

4 回答 4

0

你必须使用包含()。看这里: phpnet include()

于 2013-05-05T12:08:39.773 回答
0

你应该使用<?php include 'name_of_file.php'; ?>

于 2013-05-05T12:08:53.520 回答
0

您应该在要使用该类的任何页面中包含您的类文件。您可以通过以下方式执行此操作:

<?php include 'file_to_include.php'; ?>

之后,每当您计划在创建新对象的情况下调用该函数时,您应该执行以下操作:

<?php actions_showclient::mps_fetch_assoc($variable); ?>

如果你要为你的类添加一个“__construct”函数,你可以用不同的方式调用这个函数,但我建议你尝试在 www.codeacademy.com 上学习一些课程。他们将教您使用课程的基础知识。

另外,请确保您希望您的函数是私有的,因为这对您何时能够调用它有一定的影响(查看此以获取更多信息:公共、私有和受保护之间的区别是什么?)。

祝你好运!

于 2013-05-05T12:17:42.873 回答
0

另一个好方法是类自动加载,在单个文件中保存许多 include() 以使一切正常工作。

请参阅此处了解更多信息:http: //php.net/manual/en/language.oop5.autoload.php

于 2013-05-05T12:40:00.250 回答