2012-11-02 163 views
0

我想使用在while循環外創建的變量。 這是因爲我有不同的變量,我想放在海誓山盟之後(逗號分隔)並放入一個字符串變量。之後,我將刪除最後一個逗號。在while循環中創建變量並在循環中使用

這是我的代碼

$result = mysql_query("SELECT * FROM ".$_POST['moduleName']); 

     while($row = mysql_fetch_array($result)) 
      { 

      //read fieldnames from database 
      $fieldName = $row['modFieldName']; 

      //creating a variable with the fieldname  
      $fieldName = 'field'.$fieldName; 

      //fill Variable with posted input 
      $fieldName = $_POST[$row['modFieldName']]; 

//Put fieldname in a string (outputs: a,b,c,d,e,) 
      $postString = $fieldName.","; 

     } 
//Remove last comma  
$postString = substr($postString,0,-1); 
     echo $postString; 

回答

0

所以每次串聯的結果,而不是覆蓋字符串:

$result = mysql_query("SELECT * FROM ".$_POST['moduleName']); 

    $postString = ''; 

    while($row = mysql_fetch_array($result)) 
    { 
     //read fieldnames from database 
     $fieldName = $row['modFieldName']; 

     //creating a variable with the fieldname  
     $fieldName = 'field'.$fieldName; 

     //fill Variable with posted input 
     $fieldName = $_POST[$row['modFieldName']]; 

     //Put fieldname in a string (outputs: a,b,c,d,e,) 
     $postString = $postString.$fieldName.","; 
    } 

    //Remove last comma  
    $postString = substr($postString, 0, -1); 
    echo $postString; 

或者你可以使用.=。另外,請勿使用mysql_擴展名 - 他們已經開始棄用流程,並且很容易導致SQL注入漏洞。 PDO是一個很好的選擇,如下所示。最後,絕對不會將用戶提供的數據直接放入查詢!哎呀!

$query = $database->query('SELECT * FROM ' . $moduleName); # Please filter $moduleName against a list of known safe tables! 

$postStrings = array_map(function($row) { 
    return $_POST['field' . $row->modFieldName]; 
}, $query->fetchAll()); 

$postString = implode(',', $postStrings);