1

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

$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 }};

所以我只是在思考如何编写将两个变量与数据库中的每一行进行比较的条件时遇到了麻烦。我知道这一定是基本的,但我还没有遇到它,我的搜索结果为空。

4

3 回答 3

1

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

if  ($ID == $row['id'] && $Username == $row['username'] {
    die;
} else {
    // do something else
}
于 2013-04-17T04:21:24.000 回答
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 */ }
于 2013-04-17T04:26:19.947 回答
1
if  ($ID == $row['id'] && $Username === $row['username'] {
    die("found row");
} else {
    // do something else
}

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

于 2013-04-17T04:39:28.257 回答