Я создаю систему обмена сообщениями в PHP, как в FaceBook. По этой причине я создал 2 таблицы в базе данных MySQL, которая называется conversation
а также inbox_messages
,
Концепция заключается в том, что когда пользователь хочет начать разговор с другим пользователем, я вставляю запись в conversation
таблица с уникальным идентификатором, имеющая 4 строки:
id
user_one
user_two
date
Что я хотел бы сделать: когда пользователь входит в систему, возьмите сеанс имени пользователя, который был создан из имени входа, а затем, с помощью подготовленного оператора mysqli и запроса select, проверьте, находится ли пользователь в conversation
стол с другим. Если так, добавьте в DIV.
Проблема, с которой я сталкиваюсь, заключается в том, что со строкой запроса и особенно с оператором OR кажется, что это не работает. Что я хотел бы сделать в запросе: если user_one
равно $_SESSION['username']
ИЛИ ЖЕ user_two
равен с тем же $_SESSION['username']
, так что если вошедший в систему пользователь находится в строке таблицы user_one
или строка user_two
добавить идентификатор разговора.
$par1 = $_SESSION['username'];
$par2 = $_SESSION['username'];
//$par1 and $par2 holds the same name
$query = "SELECT id FROM conversation WHERE user_one = ? OR user_two = ?";
if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_param("ss", $par1, $par2);
$stmt->execute();
$stmt->bind_result($id);
$stmt->fetch();
if ($stmt->num_rows == 1) {
echo $id;
}
$stmt->free_result();
$stmt->close();
}
Я нашел решение.
Вместо :
if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_param("ss", $par1, $par2);
$stmt->execute();
$stmt->bind_result($id);
$stmt->fetch();
if ($stmt->num_rows == 1) {
echo $id;
}
$stmt->free_result();
$stmt->close();}
Я заменяю это на:
if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_param("ss", $par1, $par2);
$stmt->execute();
$stmt->bind_result($id);
while ( $stmt->fetch() ) {
echo $id;
}$stmt->free_result();
$stmt->close();}
И работает!
Других решений пока нет …