0

FaceBook のような受信トレイ メッセージング システムを PHP で作成しています。このため、MySQL データベースに と という 2 つのテーブルを作成しましconversationinbox_messages

概念は、ユーザーが別のユーザーとの会話を開始したいときに、conversation4 つの行を持つ一意の ID を持つテーブルにレコードを挿入することです。

  • id
  • user_one
  • user_two
  • date

私がしたいこと: ユーザーがログインすると、ログインから作成されたユーザー名セッションを取得し、mysqli 準備済みステートメントと選択クエリを使用して、ユーザーがconversation別のテーブルにいるかどうかを確認します。その場合は、DIV に追加します。

私が直面している問題は、クエリ文字列、特に OR OPERATOR ではうまくいかないようだということです。クエリでやりたいことは次のとおりです。 if user_oneis equal with $_SESSION['username']OR user_twois equal with the same $_SESSION['username']、したがって、ログインしているユーザーがテーブルの行user_oneまたは行user_twoに会話IDを追加する場合。

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

1 に答える 1

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


     }

そして動作します!

于 2016-04-04T12:37:57.487 に答える