if语句基于两个与数据库中的行匹配的变量

时间:2013-04-17 04:18:39

标签: php mysql

我在考虑如何为以下if语句编写条件时遇到一些麻烦。所以我有一个包含两列的数据库:ID和Username。我想编写一个if else语句,将变量$ ID和$ Username与数据库的行进行比较。如果它匹配我希望语句死亡,如果它不匹配我想要}其他{其他一些代码。所以我认为它会是这样的:

$ID = 5;
$Username = 'Butterdog';
$result = mysqli_query($con,"SELECT * FROM database");
while($row = mysqli_fetch_array($result))
{  
 if  $ID and $Username both match any row in the database { die
 }else{ do some other code }};

所以我很难想到如何编写将BOTH变量与数据库中的每一行进行比较的条件。我知道这必须是基本的,但我还没有碰到它,我的搜索结果是空的。

3 个答案:

答案 0 :(得分:1)

试试这个(假设你的数据库列名是id和username

if  ($ID == $row['id'] && $Username == $row['username'] {
    die;
} else {
    // do something else
}

答案 1 :(得分:1)

在查询中进行实际比较会更容易(也更有效率)。

$stmt = mysqli_prepare($con, "SELECT TRUE AS row
    FROM db WHERE id = ? AND user = ? LIMIT 1");
mysqli_stmt_bind_param($stmt, "ss", $ID, $Username);
mysqli_stmt_bind_result($stmt, $found);
mysqli_stmt_execute($stmt);

if ($found) {
    exit;
}
else { /* do something else */ }

答案 2 :(得分:1)

if  ($ID == $row['id'] && $Username === $row['username'] {
    die("found row");
} else {
    // do something else
}

比较字符串时要小心,因为==会产生意外结果,有时甚至是字符串。 '一个字符串' == 0也计算为true,因为与整数相比,任何字符串都会转换为整数。如果PHP无法正确转换字符串,则将其计算为0.因此0等于0,等于为真。这只是一个例子。 另一个建议是在php中注意你的命名风格,与其他开发人员一致尝试使用camelcase或下划线,并且不要用大写开始你的变量。 最后一个建议是小心使用mysql列名,因为它们仅在Linux上区分大小写,在Windows上它们不区分大小写。因此,请尝试使用小写字母命名并使用下划线。