mysqli подготовить запрос выбора с оператором OR не работает

Я создаю систему обмена сообщениями в 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();
}

0

Решение

Я нашел решение.

Вместо :

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

И работает!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]