Бэкэнд-журнал: PHP Примечание: попытка получить свойство не-объекта - PullRequest
0 голосов
/ 02 августа 2020

По какой-то причине я продолжаю получать эту ошибку.

Вот код:

<? 
if(isset($_POST['reciever'])){;

$aan = htmlspecialchars(filter_var($_POST['reciever'], FILTER_SANITIZE_STRING));
$stmt2 = $mysqli->prepare("SELECT `id` FROM `gebruikers` WHERE `naam` = ? ");
$stmt2->bind_param("s", $aan);
$stmt2->execute();
$kpey = $stmt2->get_result()->fetch_object();

$userid = htmlspecialchars(filter_var($_SESSION['user_id'], FILTER_VALIDATE_INT));
$stmt3 = $mysqli->prepare("SELECT `naam` FROM `gebruikers` WHERE `id` = ? ");
$stmt3->bind_param("i", $userid);
$stmt3->execute();
$kpeya = $stmt3->get_result(); 


$aan2 = $kpey->id;

$bericht = htmlspecialchars(filter_input(INPUT_POST, 'message', FILTER_SANITIZE_STRING));
$date = date("Y-m-d G:i:s");
$userid = htmlspecialchars(filter_var($_SESSION['user_id'], FILTER_VALIDATE_INT));
$stmt1 = $mysqli->prepare("INSERT INTO msg (msg_van, msg_aan, msg_txt, msg_date) 
VALUES (?, ?, ? , ? )");
$stmt1->bind_param('ssss', $userid, $aan2, $bericht,$date);  
$stmt1->execute();

echo "Message has been send!"; ?>

Backend log:

PHP Примечание: Попытка получить свойство не-объекта

Эта ошибка находится в строке 69, которая в этом примере: $aan2 = $kpey->id;.

1 Ответ

0 голосов
/ 02 августа 2020

Думаю, я понимаю, в чем проблема. Первый запрос ничего не возвращает, потому что вы сообщаете MySQL, что $aan является целым числом в $stmt2->bind_param("i", $aan);, хотя на самом деле это строка. Измените "i" на "s", и тогда вы должны получить ответ и получить доступ к объекту.

EDIT: При тестировании я понял, что $aan всегда является пустой строкой. Я не знаком с функцией filter_input(), но когда я использую filter_var(), я получаю ожидаемую строку, и все работает так, как ожидалось. Вот как будет выглядеть эта другая строка:

$aan = htmlspecialchars(filter_var($_POST['reciever'], FILTER_SANITIZE_STRING));

Небольшое примечание: «получатель» пишется как «получатель», но я вижу, что это не ваш родной язык. Для согласованности попробуйте везде использовать английский sh или голландский (переменные POST и столбцы SQL)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...