我们可以将列动态地传递到mysql select语句中

时间:2013-06-14 06:30:51

标签: php mysql

我需要编写select语句,因为我们可以使用PHP语言将列传递给动态查询。

我有这样的查询。

SELECT  `Pro_Csharp` +  `Pro_Java` +  `Pro_VBA` +  `Pro_Cplus` +  `Frameworks_Aspdotnet` +  `Fram_MVCdotnet` +  `Fram_WCF` +  `Fram_Hibernate` +  `Fram_Struts` +  `Fram_Spring` +  `Data_transformations_XML` +  `Data_transformations_XSL` AS total_skill
FROM wp_skilllist
ORDER BY total_skill DESC 

用户可以从界面中选择要选择的主题。大约有130列。因此,我想动态地处理它。有没有办法做到这一点?

如果我们不能用mysql做这个,建议用php语言也很有帮助。

2 个答案:

答案 0 :(得分:3)

在解析用户输入时动态构建查询字符串:

$sqlString = 'SELECT ';
if ($userInput['csharp']) $fields[] = 'Pro_Csharp';
...
$sqlString .= implode (' + ', $fields);
$sqlString .= ' AS total_skill FROM...'; // rest of your query
sendQueryWithDriverOfYourChoice($sqlQuery);

答案 1 :(得分:1)

这可以做到。

执行此操作的最佳方法取决于您是否打算使用参数化语句。当你是新手时,最好保持简单。以下伪代码为您提供无限可扩展的查询。如果您只有一个复选框页面,其名称与您的颜色名称相同,则可以使用。否则,您需要对阵列进行一些清理。

$keys=array_keys($_POST);
$sql="SELECT ";
foreach($keys AS $thecolumn)
    {
    $sql.="`$thecolumn`+ ";
    }
$sql=substr($sql,0,strlen($sql)-2); //trim off last +
$sql.=" AS total_skill FROM wp_skilllist ORDER BY total_skill DESC";