2012-11-02 165 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);