2012-08-27 39 views
1

在這裏找不到這個問題的確切答案,雖然它可能很簡單(如果有答案,請指向正確的方向)。替換MySQL查詢結果中的字符PHP

我從MySQL中拉出一些數據,其中一些字符導致數據不能顯示在終點。因此,我需要挑出這些特定字符,並將其替換爲允許的字符。具體而言,我需要更改&,'和+。我必須從該查詢做到這一點的工作:

$query = "select * from data where a_data_id=".$ID." AND a_discard_data_from!=1"; 

我在想,如果我可以添加到這個字符串,或者這個字符串後,一些規則來代替實例&「,或+與其它字符/秒。

感謝您的期待!

注意:有與上面的字符串沒有問題,它是運行很好,我只是想給它添加或之後某種類型的代碼,將在從查詢拉數據替換某些字符

周圍代碼:

$arr=""; 
$main_arr=""; 
$query = "select * from data where a_data_id=".$ID." AND a_discard_data_from!=1"; 
$query .=" and last_update >= " . '"' . $dataDate . '"'; 
$table = mysql_query($query); 
if (mysql_num_rows($table) > 0) { 
    while ($row = mysql_fetch_assoc($table)) { 
     foreach ($row as $key => $value) { 
      $arr[$key] = $value; 
      if ($key == "to_data_id") {  
       $array=mysql_fetch_array(mysql_query("select name,additional from details where data_id=".$value)); 
       $arr["data_id"] = $array['additional'].".".$array['name']; 
      } 
     } 
     $main_arr[] = $arr; 
    } 
} 



$data = json_encode($main_arr); 

只是如何減慢它到這個代碼將是偉大的,謝謝! (這段代碼工作正常,只是想知道我可以更改/添加以替換那些字符)。

更新:有人能給我一個答案,我可能如何使用strtr()函數來取代結果嗎?再次感謝您的回覆!

+1

數據顯示的終點是什麼?也許從結構上來說,在處理這種類型的表現事件(特定於終點)方面更有意義,它比數據庫層更接近終點本身?事實上,很可能終點具有庫函數或類似的函數來處理/封裝/編碼無法顯示的字符。 – eggyal

+0

是的,這是真的,但由於某些原因,我不能在這個階段改變 - 我需要處理這個查詢,它直接發送數據到應用程序,所以需要處理查詢,並想知道是否有某種類型的代碼,我可以用它來替換正在傳遞的檢索數據。謝謝 –

+2

它是如何編輯查詢而不是調度查詢的代碼? – eggyal

回答

0

在mysql中,如果您在選擇*之後手動選擇一個字段,它會覆蓋該字段,因此只有一個要運行的字段會被替換,並且您知道該字段可以提前更改您的選擇查詢(有點不太正當):

"select 
    *, 
    REPLACE(
     REPLACE(
      REPLACE(`data`.`YOURFIELDNAME`, '&', 'A'), 
     ',', 'A'), 
    '\'', 'A') 
from 
    data 
where a_data_id=".$ID." AND a_discard_data_from!=1"; 

這將刪除這些字符。這不是很優雅,正如eggyal指出的,你最好在前端做這件事。

+0

我想這正是我目前需要的!謝謝!在你寫的內容中,什麼取代了什麼? &被替換爲,? (是的,它只是在一列中,稱爲the_data)A是什麼?試圖弄清楚這是如何工作的,謝謝!!!!!!!!! –

+0

哦,我明白了,A就是變了,謝謝! –

+0

對不起,我在過去的一個小時左右一遍又一遍地嘗試了這種方式,它不會起作用 - 我需要在傳遞給應用程序之前,將MySQL中傳出的數據串替換掉。 –