2

我有一个 PHP 数组:Array(keyword1,blah0,blah1,blah2)和一个 SQL 查询。

在查询中,我想查找 Array 中的数据之一是否存在于选定的少数列之一中(columnA|columnB|columnC),如果为真则获取该行。

4

2 回答 2

1

我想这就是你想要的。我不知道您是否要检查数组中每个值的每一列。

SELECT * FROM tableName
WHERE columnA = $phpArray[0] OR
columnA = $phpArray[0] OR
columnB = $phpArray[0] OR
columnC = $phpArray[0] OR
columnA = $phpArray[1] OR
columnB = $phpArray[1] OR
columnC = $phpArray[1] OR
columnA = $phpArray[2] OR
columnB = $phpArray[2] OR
columnC = $phpArray[2] OR 
... 
columnC = $phpArray[n];

您可以使用 PHP 在循环中创建此语句

$sql = "SELECT * FROM tableName WHERE ";
for($i=0;$i<count(phpArray)-1;$i++){
   $sql .= "columnA = "+"'"+$phpArray[$i]+"'"+ OR "
   $sql .= "columnB = +"'"+$phpArray[$i]+"'"+ OR "
   $sql .= "columnC = +"'"+$phpArray[$i]+"'"+ OR "
}
$sql .= "columnA = +"'"+$phpArray[$i]+"'"+ OR "
$sql .= "columnB = +"'"+$phpArray[$i]+"'"+ OR "
$sql .= "columnC = +"'"+$phpArray[$i]+"'"+;"
*send sql query

编辑:修复了代码中的错误

于 2012-07-12T15:53:59.723 回答
1

您需要这样的查询:

$instring = implode("','", $array);
$sql = "SELECT `xy` FROM `z` WHERE (`columnA` IN ('".$instring."')
OR `columnB` IN ('".$instring."')
OR `columnC` IN ('".$instring."'))";
于 2012-07-12T15:57:33.573 回答