我有一個訪問類似這樣的僞代碼MySQL數據庫大約75 PHP現有腳本的其餘部分之前更改Mysqli_result:返回結果到應用
$query="SELECT * from table";
$result=mysqli_query($conn,$query);
if (mysqli_num_rows($result)) {
while($row=mysqli_fetch_assoc($result)) {
//use the rows
}
}
我最近被迫將所有的數據庫字段單獨加密,所以現在當這75個php腳本如上所示運行時,所有的$行會返回所有加密的字段,因此無法使用。
因此,而不是改變所有的75個PHP腳本來解碼每個字段,我想創建一個函數執行mysqli_query,然後解密所有字段,並返回結果,就好像它是由mysqli_query返回的,但解密。像
function QueryAndDecrypt($conn,$query){
$result=mysqli_query($conn,$query);
if (mysqli_num_rows($result)) {
while($row=mysqli_fetch_assoc($result)) {
$row=decrypt($row);
}
}
return $result; <<----- return result with fields decrypted
}
// now all 75 scripts would have to change just one line to call above
$query="SELECT * from table";
$result=QueryAndDecrypt($conn,$query); <<--- change only 1 line
if (mysqli_num_rows($result)) {
while($row=mysqli_fetch_assoc($result)) {
//use the rows as normal decrypted
}
}
事情正如你可以看到我只是想改變這一行中的所有75個腳本,這樣它會像以前一樣做同樣的事情,結果會回來與已解密的所有領域。
我試過編寫這個QueryAndDecrypt函數,但是當我如上所示更改mysqli_result $行的結果時,它不會更改,因爲mysql的結果是某種不可更改的集合(我被告知)或類似的東西那。
無論如何,通過編寫一個可以從執行sql查詢的所有腳本中調用的通用函數來執行此操作,並且還可以通過所有其他腳本(如普通的mysql查詢結果?
任何人都可以幫助,即時「新鮮的船」,所以我不知道SQL或php,我現在非常絕望,因爲所有的腳本都因此而被破壞!
感謝
可能重複[結果集不更新後mySQL查詢](http://stackoverflow.com/questions/43381066/result-set-not-updating-after-mysql-query) – Jocelyn
如果您使用msqli在OO風格,你可以創建一個類來僞裝返回行數的方法(如果有的話,返回1),並返回一行的數組。但是你有程序風格,所以你將不得不編輯num rows行和fetch line。 –
對其他問題沒有解決方案 – Programmer2