我有一个查询$sqlStr4
,可以从MySQL数据库中“选择”这些字段:
loginid
username
created
查询$sqlStr4
限制为10行/结果。
我还有以下变量:
$u = $_SESSION['username'];
如果$topten
等于查询$u
返回的十个username
字段中的任何一个,我想将另一个变量$sqlStr4
指定为值1,并且值为如果没有,则为0。
我该怎么做?
提前致谢,
约翰
答案 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
}
对于您的情况,可能有更好的解决方案。如果您发布一些代码会更容易!