【问题标题】:Call to a member function query() on a non-object在非对象上调用成员函数 query()
【发布时间】:2012-10-07 14:39:13
【问题描述】:

我对 PHP 有点陌生,对 MySQLi 也很陌生,我正在尝试在由 5 个变量组成的数据库中插入一行。

if($_POST['submit']) {
            $title = mysqli_escape_string($_POST['title']);
            $content = $_POST['content'];
            $author = $_SESSION['fullname'];
            $publishedtime = time();
            $pageID = $_POST['pageid'];
            $connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

            if ($connection->errno) {
                printf("Connection failed: %s\n", $connection->error);
                exit();
            }

            $author = $_SESSION['fullname'];
            $publishedtime = time();
            $q = "INSERT INTO posts (title, content, author, publishedtime, pageID) VALUES ('".$title."', '".$content."', '".$author."', '".$publishedtime."', '".$pageID."')";

            if (!$dbc->query($q)) {
                echo "INSERT failed: (" . $dbc->errno . ") " . $dbc->error;
            }    
            echo "Newest user id = ",$dbc->insert_id;

            $connection->close();

        }
        else {
            addPostForm();
        }

我收到以下错误:

警告:mysqli_escape_string() 需要 2 个参数,1 个在 /admin/manage.php 第 11 行给出

致命错误:在第 27 行的 /admin/manage.php 中对非对象调用成员函数 query()

我可以正常读取数据库,但无法插入。

谢谢

【问题讨论】:

  • 所有错误都报告得很好。阅读和诊断。
  • 我不关心 mysqli 警告,我可能会弄清楚,但我不知道错误意味着什么,否则我会诊断它。我用谷歌搜索,每个有错误的人都得到了不同的修复,我发现他们要么对我不起作用,要么不适用。这就是我在这里发布它的原因

标签: php mysqli


【解决方案1】:

如果您在创建mysqli 对象后使用real_escape_string,则可以直接使用

$connection->real_escape_string($_POST['title'])

http://www.php.net/manual/en/mysqli.real-escape-string.php


至于查询错误...$dbc从哪里来?!你会想要使用:

$connection->query(...);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2012-04-20
    • 2015-05-01
    相关资源
    最近更新 更多