2015-04-02 30 views
3

我想從我的函數打印一些動態的數據,像這樣在函數中傳遞字符串。在函數中的特定位置替換字符串在PHP中?

我的功能

function mysql_funX_Repeter($query,$itemtemplet) 
{ 
    $this->mysql_funX_connect(); 

    $result = mysql_query($query) or die("Repeter Query Error."); 
    if (!$result) 
    { 
     $message = 'ERROR:' . mysql_error(); 
     return $message; 
    } 
    else 
    { 
     $newtempelt = str_replace("Eval", '$row', $itemtemplet); 
     while ($row = mysql_fetch_array($result)) 
     { 

      echo $newtempelt; 
     } 
    } 
} 

傳遞價值功能

<ul> 
<?php 
$rptvalue="<li><a href=''>Eval['name']</a></li>"; 
$myFun->mysql_funX_Repeter("Select name from tbldemo",$rptvalue); 
?> 
</ul> 

我的輸出

  • $行[ '名稱']
  • $行[ '名稱']
  • $行[ '名稱']

我想輸出

  • 拉吉

  • RAM

  • 王子

但它只顯示我的變量,但不顯示它的數據庫值。 如何解決這個... !!!

+0

我不知道這是爲什麼,我懷疑它是一種保障。這是一個更簡單的用例。 '$ row ['name'] ='test'; $ rptvalue =「

  • Eval['name']
  • 」; echo str_replace(「Eval」,'$ row',$ rptvalue);' – chris85 2015-04-03 00:01:53

    +0

    不,先生這是行不通的。它顯示爲'$ row ['name']' – 2015-04-03 00:23:21

    +0

    我對這種行爲並不熟悉,一直沒能找到任何文檔。我發佈的代碼是用於演示此問題的更簡單的代碼形式;所以來到這裏的其他人可以更快地重現問題並可能知道原因。 – chris85 2015-04-03 03:56:11

    回答

    0

    我會改變一點點你的方法。

    function mysql_funX_Repeter($query,$itemtemplet) 
    { 
        $this->mysql_funX_connect(); 
    
        $result = mysql_query($query) or die("Repeter Query Error."); 
        if (!$result) 
        { 
         $message = 'ERROR:' . mysql_error(); 
         return $message; 
        } 
        else 
        { 
         while ($row = mysql_fetch_array($result)) 
         { 
    
          echo "<li><a href=''>".$row[$itemtemplet]."</a></li>"; 
         } 
        } 
    } 
    

    ,當然還有,你的方法invokation:

    <ul> 
    <?php 
    $rptvalue="name"; 
    $myFun->mysql_funX_Repeter("Select ".$rptvalue." from tbldemo",$rptvalue); 
    ?> 
    </ul> 
    

    這就是我想這樣做是爲了避免討厭的evals。 :)

    0
    function mysql_funX_Repeter($query,$itemtemplet) 
    { 
        $html=''; 
        $this->mysql_funX_connect(); 
        $result = mysql_query($query) or die("Repeter Query Error."); 
        $num_rows=mysql_num_rows($result); 
        if($num_rows){ 
        while ($row = mysql_fetch_array($result)) 
        { 
         $newtempelt = str_replace("Eval", $row['column_name'], $itemtemplet); 
         $html.="<li><a href=''>".$newtempelt."</a></li>"; 
        } 
        } 
        return $html; 
    } 
    

    //調用方法mysql_funX_Repeter

    <ul> 
    <?php 
    $rptvalue="name"; 
    echo $myFun->mysql_funX_Repeter("Select ".$rptvalue." from tbldemo",$rptvalue); 
    ?> 
    </ul> 
    
    0

    開發我的問題得到解決。 感謝您的回覆。

    我的功能

    //This Repeter Function Created By Priyank Patel 
    function mysql_funX_Repeter($query,$itemtemplet) 
    { 
        $this->mysql_funX_connect(); 
    
        $result = mysql_query($query) or die("Repeter Query Error."); 
        if (!$result) 
        { 
         $message = 'ERROR:' . mysql_error(); 
         return $message; 
        } 
        else 
        { 
         preg_match_all('/{([^}]*)}/', $itemtemplet, $matches); 
         $select = ''; 
         while($row = mysql_fetch_assoc($result)){ 
          $aux = $itemtemplet; 
    
          for($i = 0; $i < count($matches[0]); $i++){ 
           $aux = str_replace($matches[0][$i], $row[$matches[1][$i]],$aux); 
          } 
          $select .= $aux."\n"; 
         } 
         mysql_close(); 
         return $select; 
        } 
    } 
    

    呼叫風格

    <ul><?php $templet="<li>{name}</li>";echo $myFun->mysql_funX_Repeter("Select * from tbldemo",$templet);?></ul>