目前我有一段代码可以正常工作。但我真正想做的是将<?php if strval ..?>
部分作为WHERE
条款放入"SELECT * FROM projects"
部分。我不确定这是否可能或如何去做。任何想法都会受到真正的重视。希望这是有道理的。
<?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>
如果您的用户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)"
但我认为你应该看看你的数据库设计。在这样的分隔列表中包含外键的麻烦在于,外键的全部意义在于使您能够使用索引快速找到另一个表中的信息。通过实现您拥有的数据库,您需要解决各种问题。
我不确定,但也许这会对你有所帮助。
if(strval ...)
{
$where = "where field = $value";
}
现在,您可以在选择查询中使用此$where
变量。 仅当您的if condition
满意时,它才会执行。
如果我
正确理解您的代码,您应该使用 SQL LIKE
,即:
$query_activeusers = "SELECT * FROM projects WHERE assignedto LIKE '%," .
((int) $userid) . ",%'";
此处强制转换为 (int) 是为了确保您在$userid
中没有特殊的 SQL 字符 - 一种对整数值的廉价 SQL 引用。您实际上不需要使用 strval
因为串联到字符串会将该数字转换为字符串。