【发布时间】:2016-04-04 12:02:07
【问题描述】:
我正在用 PHP 创建一个收件箱消息系统,就像 Facebook 的那样。为此,我在 MySQL 数据库中创建了 2 个表,分别称为 conversation 和 inbox_messages。
这个概念是当一个用户想要与另一个用户开始对话时,我将一条记录插入到 conversation 表中,其唯一 id 有 4 行:
iduser_oneuser_twodate
我想做什么:当用户登录时,获取从登录创建的用户名会话,然后使用 mysqli 准备语句和选择查询,检查用户是否在 conversation 表中另一个。如果是这样,请附加在 DIV 中。
我面临的问题是查询字符串,尤其是 OR OPERATOR,似乎不起作用。我想在查询中做的是:如果user_one等于$_SESSION['username']或user_two等于相同$_SESSION['username'],所以如果登录用户在表行user_one或行@ 987654336@追加对话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();
}
【问题讨论】:
-
查看以下链接 php.net/manual/en/mysqli.error.php 和 php.net/manual/en/function.error-reporting.php 并将其应用于您的代码。
-
好的,我会这样做,但我想问一下,我的 $query 是否正确,也许我应该写不同的,因为这是我第一次使用 OR 运算符
-
查询本身看起来没问题(一个可以争论在该表中使用字段 user_one 和 user_two 而不是对与另一个表的关系进行建模,但无论如何....) .你得到的结果是什么?它与你的预期有什么不同?
-
我没有得到任何结果。我期望的是获取两个用户之间的唯一 ID,然后搜索我的第二个表,其中对话 ID 等于我获得的 ID,并找到两个用户之间的所有消息
-
从我的查询中我得到以下错误**您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在 '? 附近使用的正确语法。或 user_two = ?** @Fred-ii-
标签: php mysqli prepared-statement or-operator