Fatal error: Call to a member function query() on

2019-09-21 19:44发布

Possible Duplicate:
Call to a member function query() on a non-object in query()?

I am getting the

Fatal error: Call to a member function query() on a non-object Error when trying to get row count from an Account table in my database. Here is the code:

$link = mysqli_connect("localhost", "Username", "Password", "Database");    
        if ($result = $mysqli->query($link, "SELECT * FROM Accounts WHERE Username=" . $_POST['EmailTbx'] . " AND Password=" . $_POST['PasswordTbx'] . "")){
            $field_cnt = $result->field_count;
            echo $field_cnt;
            $result->close();
        }
        $mysqli->close();

2条回答
冷血范
2楼-- · 2019-09-21 20:01

Your MySQLi object is $link here. Not $mysqli. So either use

$link->query()

or

mysqli_query($link, ...)

This is the procudural version

查看更多
贼婆χ
3楼-- · 2019-09-21 20:11

It looks like you got your variables mixed up. Try the following (does not prevent injection):

$link = mysqli_connect("localhost", "Username", "Password", "Database");    
        if ($result = $link->query("SELECT * FROM Accounts WHERE Username='{$_POST['EmailTbx']}' AND Password='{$_POST['PasswordTbx']}'")){
            $field_cnt = $result->field_count;
            echo $field_cnt;
            $result->close();
        }
        $mysqli->close();

Try the following with escaping:

$link = mysqli_connect("localhost", "Username", "Password", "Database");
$email = mysqli_real_escape_string($link, $_POST['EmailTbx']);
$pass = mysqli_real_escape_string($link, $_POST['PasswordTbx']);
        if ($result = $link->query("SELECT * FROM Accounts WHERE Username='{$email}' AND Password='{$pass}'")){
            $field_cnt = $result->field_count;
            echo $field_cnt;
            $result->close();
        }
        $mysqli->close();
查看更多
登录 后发表回答