0

目前我有一段代码可以正常运行。但我真正想做的是把这个部分作为一个子句<?php if strval ..?>放入部分中。我不确定这是否可能或如何去做。任何想法都会受到重视。希望这是有道理的。"SELECT * FROM projects"WHERE

<?php 

//  ** User ID
$userid = $row_listelements ['id'];

// ** Projects
mysql_select_db($database_db, $db);
$query_activeusers = "SELECT * FROM projects ";
$activeusers = mysql_query($query_activeusers, $db) or die(mysql_error());
$row_activeusers = mysql_fetch_assoc($activeusers);
$totalRows_activeusers = mysql_num_rows($activeusers);

?>

<? do {?>

<?php if (!(strpos($row_activeusers['assignedto'], strval(",".$userid.",")) === false)) { ?>
<div><?=$row_activeusers['jobnumberdisplay'];?></div>
<?php } ?>

<? } while ($row_activeusers = mysql_fetch_assoc($activeusers)); ?>    

<strong><?php echo $totalRows_activeusers; ?></strong>
4

3 回答 3

1

如果您的用户 ID 是唯一编号,并且我正确理解您的问题,您可以通过以下方式达到此目的:

使用IN - 可以处理字符串和数字(​​它们必须是唯一的才能使这项工作):

$query_activeusers = "SELECT * FROM projects WHERE ".$userid." IN (assignedto)";

或使用FIND_IN_SET - 可以处理字符串和数字区分大小写:

$query_activeusers = "SELECT * FROM projects WHERE FIND_IN_SET('".$userid."', assignedto)"

但我认为你应该看看你的数据库设计。像这样在分隔列表中包含外键的问题在于,外键的全部意义在于使您能够使用索引快速定位另一个表中的信息。通过实现听起来像你所拥有的数据库,你有各种各样的问题需要解决。

于 2013-01-29T07:02:06.027 回答
0

我不确定,但也许这会对你有所帮助。

if(strval ...)
{
   $where = "where field = $value";
}

现在您可以$where在选择查询中使用此变量。只有当您if condition满意时才会执行。

于 2013-01-29T06:49:42.070 回答
-1

如果我正确理解您的代码,您应该使用 SQL LIKE,例如:

$query_activeusers = "SELECT * FROM projects WHERE assignedto LIKE '%," . 
   ((int) $userid) . ",%'";

此处转换为 (int) 是为了确保您没有特殊的 SQL 字符$userid- 一种用于整数值的廉价 SQL 引用。您实际上并不需要使用strvalas 连接到字符串中,将该数字转换为字符串。

于 2013-01-29T06:51:22.493 回答