PHP:WHERE子句中的strval

时间:2013-01-29 06:42:34

标签: php

目前我有一段功能正常的代码。但我真正想做的是采用 <?php if strval ..?> 部分并将其作为 {{1}放入 "SELECT * FROM projects" 部分} 子句。我不确定这是否可行或如何实现。任何想法都会受到重视。希望这是有道理的。

WHERE

3 个答案:

答案 0 :(得分: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)"

但我认为你应该看看你的数据库设计。在这样的分隔列表中包含外键的问题在于,外键的重点是使您能够使用索引快速定位另一个表中的信息。通过实现您拥有的数据库,您可以解决各种问题。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:-1)

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

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

这里的转换为(int)是为了确保$userid中没有特殊的SQL字符 - 对整数值进行廉价的SQL引用。您实际上不需要使用strval作为字符串的连接将该数字转换为字符串。