Php 根据查询结果中是否出现其他变量,为变量指定值1或0

Php 根据查询结果中是否出现其他变量,为变量指定值1或0,php,mysql,Php,Mysql,我有一个查询$sqlStr4,它从MySQL数据库中“选择”这些字段: loginid username created 查询$sqlStr4限制为10行/结果 我还有以下变量: $u = $_SESSION['username']; 如果$u等于查询$sqlStr4返回的十个用户名字段中的任何一个,我想为另一个变量$topten分配一个值1,如果不等于,则分配一个值0 我该怎么做 提前感谢, John如果您粘贴了查询,我们将能够提供固定版本。您可以通过多种方式实现这一点,但其中之一是向查询

我有一个查询
$sqlStr4
,它从MySQL数据库中“选择”这些字段:

loginid
username
created
查询
$sqlStr4
限制为10行/结果

我还有以下变量:

$u = $_SESSION['username'];
如果
$u
等于查询
$sqlStr4
返回的十个
用户名
字段中的任何一个,我想为另一个变量
$topten
分配一个值1,如果不等于,则分配一个值0

我该怎么做

提前感谢,


John

如果您粘贴了查询,我们将能够提供固定版本。您可以通过多种方式实现这一点,但其中之一是向查询中添加一列并使用CASE语句

select *, CASE WHEN username = '$u' THEN 1 ELSE 0 END as topten
from ...
这只是一个例子。。显然,为了防止SQL注入,您应该对其进行参数化,或者使用mysql\u real\u escape\u string(),或者存储过程,等等

编辑:我知道你希望变量是在PHP中。。。因此,您需要遍历数组来检查每个数组。你有什么问题

$topten = 0;
if ($result) {
   while ($record = mysql_fetch_array($result)) {
      if ($record['username'] == $u) $topten = 1;
   }
}
使用:


可以尝试这样的方法

while ($row = mysql_fetch_assoc($sqlStr4))
{
    $topten = ($u == $row['username']) ? 1 : 0;
    // the rest of your processing code here
}

很可能有更好的办法来解决你的情况。如果你发布一些代码会更容易

如果后续记录不匹配,这将把
$topten
值重置为零。@OMG-这完全取决于OP想要它做什么。如果他们只是简单地检查一下,那么就可以在查询中使用
mysql\u num\u rows()
。我假设他希望循环并处理行,因此他希望每次都重置值。一个简单的
if($topten)中断,但在这种情况下,我建议他重新思考他的查询!
while ($row = mysql_fetch_assoc($sqlStr4))
{
    $topten = ($u == $row['username']) ? 1 : 0;
    // the rest of your processing code here
}