/ / Фатална грешка: Извикване на заявка за функция на член () на не-обект в [duplicate] - mysqli, php, fatal-error

Фатална грешка: Обадете се на заявка за функция на член () на не-обект в [duplicate] - mysqli, php, fatal-error

Възможно дублиране:
Обадете се на заявка функция член () на не-обект в заявката ()?

Аз получавам

Фатална грешка: Извикване на заявка за функция на член () на не-обект Грешка при опит за получаване на брой редове от таблица на сметки в моята база данни. Ето кода:

$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 за отговор № 1

Изглежда, че вашите променливи са смесени. Опитайте следното (не изключва инжектирането):

$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();

Опитайте следното с избягване:

$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();

1 за отговор № 2

Вашият MySQLi обект е $link тук. Не $mysqli, Така или използвайте

$link->query()

или

mysqli_query($link, ...)

Това е прокудурната версия