0

PHP 言語を使用して列を動的にクエリに渡すことができるため、select ステートメントを記述する必要があります。

このようなお問い合わせがあります。

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 に答える