根据查询结果中是否出现另一个变量,为变量赋值1或0

时间:2010-10-13 17:09:11

标签: php mysql

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

loginid
username
created

查询$sqlStr4限制为10行/结果。

我还有以下变量:

$u = $_SESSION['username'];

如果$topten等于查询$u返回的十个username字段中的任何一个,我想将另一个变量$sqlStr4指定为值1,并且值为如果没有,则为0。

我该怎么做?

提前致谢,

约翰

3 个答案:

答案 0 :(得分:0)

如果您粘贴了查询,我们就可以提供固定版本。您可以通过多种方式执行此操作,但一种方法是在查询中添加一列并使用CASE语句。

select *, CASE WHEN username = '$u' THEN 1 ELSE 0 END as topten
from ...

这只是一个例子..显然要防止SQL注入你应该参数化它,或者使用mysql_real_escape_string(),或者存储过程等等......

编辑:我看到你希望变量在PHP中...所以你需要遍历数组来检查每一个。你有什么问题?...

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

答案 1 :(得分:0)

使用:

<?php

$u = $_SESSION['username'];
$topten = 0;

$result = mysql_query($sqlStr4);

while ($row = mysql_fetch_assoc($result)) {
  if ($row['username'] == $u) {
    $topten = 1;
    break;
  }
}

mysql_free_result($result);
?>

答案 2 :(得分:0)

可以尝试这样的事情......

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

对于您的情况,可能有更好的解决方案。如果您发布一些代码会更容易!