2016-05-06 28 views
2

我有一個名爲$queries一個數組,看起來像這樣:如何在多個查詢中進行多個字符串替換?

Array ( 
    [0] => SELECT * FROM StudentRecord WHERE Year = '%YEAR%' AND Session = '%SESSION%' AND StudentID = '%SID%'; 
    [1] => SELECT * FROM Student_ApplicationRecord WHERE ApplicationYear = '%YEAR%' AND Session%SESSION% = 1; 
) 

我也有一個第二陣列稱爲$variables,看起來像這樣:

$variables = array('YEAR' => 2016, 'SESSION' => 1, 'SID' => $_SESSION['sid']); 

我想用替換$queries變量正確的值在$variables

我已經嘗試了許多解決方案,我已經拿出了迄今爲止最好的是:

foreach ($queries as $query) 
    foreach($variables as $key=>$value) 
     $newqueries[] = str_replace("%".$key."%", $value, $query); 

然而這僅僅是在每個查詢一次更換一個變量。

即當我這樣做:

foreach ($newqueries as $query) 
    print ($query); 

每個查詢的結果是:

SELECT * FROM StudentRecord 
WHERE Year = '%YEAR%' AND Session = '%SESSION%' AND SID = '%SID%'; 

SELECT * FROM StudentRecord 
WHERE Year = '%YEAR%' AND Session = '1' AND SID = '%SID%'; 

SELECT * FROM StudentRecord 
WHERE Year = '%YEAR%' AND Session = '%SESSION%' AND SID = '1234'; 

我要的是一個最終的陣列$newqueries,看起來像這樣:

Array ( 
    [0] => SELECT * FROM StudentRecord WHERE Year = '2016' AND Session = '1' AND StudentID = '1234'; 
    [1] => SELECT * FROM Student_ApplicationRecord WHERE ApplicationYear = '2016' AND Session1 = 1; 
) 

任何人都可以幫我嗎?我很抱歉,如果之前已經問過這個問題,但我還沒有找到任何類似的問題。

+1

爲什麼不使用帶有參數綁定的預處理語句呢? – Shadow

回答

3

由於str_replace()接受您可以使用該參數的$search$replace參數的數組。

$search = ['%YEAR%', '%SESSION%', '%SID%']; 
$replace = ['2016', '1', $_SESSION['id']]; 
$newQueries = []; 
foreach ($queries as $query) { 
    $newQueries[] = str_replace($search, $replace, $query); 
} 
+1

你是一個非常好的人類哈夫洛克。謝謝! – monkeyman

相關問題