0

我需要编写选择语句,因为我们可以传递列以使用 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 语言对此提出建议也很有帮助。

4

2 回答 2

3

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

$sqlString = 'SELECT ';
if ($userInput['csharp']) $fields[] = 'Pro_Csharp';
...
$sqlString .= implode (' + ', $fields);
$sqlString .= ' AS total_skill FROM...'; // rest of your query
sendQueryWithDriverOfYourChoice($sqlQuery);
于 2013-06-14T06:58:23.713 回答
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";
于 2013-06-14T06:59:23.337 回答