我有一个访问类似这样的伪代码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