您如何知道$id1
是否与$user1
或$user2
的行匹配?这是执行此查询的正确方法吗?
$sql = "SELECT id FROM users WHERE username='$user1',username='$user2' LIMIT 2";
$query = mysqli_query($con, $sql);
$row = mysqli_fetch_row($query);
$id1 = $row[0];
$id2 = $row[1];
ORDER BY username='$user1'
吗?答案 0 :(得分:2)
正如我在评论中所说,您的语法无效。 WHERE
子句使用AND
或OR
作为分隔符,而不是逗号。
所以你需要做的就是调整你的查询并在之后进行比较:
旁注:您可能需要向SELECT添加额外的列,因为这可能会引发未定义的偏移通知。另外请确保如果您的行数超过2行,则LIMIT为2可能会失败。
$sql = "SELECT id FROM users WHERE username='$user1' OR username='$user2' LIMIT 2";
$query = mysqli_query($con, $sql);
$row = mysqli_fetch_row($query);
$id1 = $row[0];
$id2 = $row[1];
if($user1 == $id1) {
echo "User 1 is the same ";
}
if($user2 == $id2) {
echo "User 2 is the same";
}
参考文献:
根据你的编辑:
我可以使用ORDER BY username ='$ user1'
不,您需要使用ORDER by column_name
,而不是“等于”和变量。
如果您的列名与变量相同,那么这是可能的,但在您的数据库模式/内容已知之前我肯定不会知道。
语法为:
ORDER BY column
接受ASC
或DESC
,具体取决于您想要的顺序。
参考:
如果您的查询有任何用户干预/输入,您将需要使用预准备语句,因为这将使您对SQL注入开放。
参考文献: