如何在PHP中修复此功能

时间:2016-03-17 11:23:50

标签: php function

我想在sql中使用此函数插入​​,但这不起作用,任何想法来解决这个问题

错误是警告:mysqli_query()期望参数1为mysqli,在第29行的C:\ WampServer \ www \ test.php中给出null

<html>
    <body>
    <?php
    $Connection = mysqli_connect('localhost', 'root', '', 'pytshqip');
    $contact_method = 'aaaaa';

    $form_data = array
    (
        'text' => $contact_method,
        'from' => $contact_method,
        'user_1' => $contact_method,
        'user_2' => $contact_method,
        'date' => time()
    );

    dbRowInsert('chat', $form_data);

    function dbRowInsert($table_name, $form_data)
    {
        // retrieve the keys of the array (column titles)
        $fields = array_keys($form_data);

        // build the query
        $sql = "INSERT INTO ".$table_name."
        (`".implode('`,`', $fields)."`)
        VALUES('".implode("','", $form_data)."')";

        // run and return the query result resource
        return mysqli_query($Connection, $sql);
    }
    ?>
    </body>
</html>

2 个答案:

答案 0 :(得分:0)

您的变量超出了功能范围。在使用global $Connection;之前,在dbRowInsert()函数中添加$Connection,以便能够访问函数范围内的变量。

答案 1 :(得分:0)

当您使用已在函数dbRowInsert()之外定义的变量$ Connection时,您需要使用global关键字。

function dbRowInsert($table_name, $form_data)
{
    global $Connection;

    // retrieve the keys of the array (column titles)
    $fields = array_keys($form_data);

    // build the query
    $sql = "INSERT INTO ".$table_name."
    (`".implode('`,`', $fields)."`)
    VALUES('".implode("','", $form_data)."')";

    // run and return the query result resource
    return mysqli_query($Connection, $sql);
}

您可以在此处找到更多信息:http://php.net/manual/en/language.variables.scope.php