![](/img/trans.png)
[英]How do I correctly specify the WHERE clause in this SQL query written in PHP?
[英]How do I log a SQL Query without Sensitive Data in Where Clause?
我正在从数据库记录查询,我只需要查询的一般形式。 出于这个原因,我想从查询中删除特定数据并记录下来。 然后我可以得到所有的通用形式的查询。
就像是:
select * from table where key_field = 12
将记录为:
select * from table where key_field = ?
我已经在 Newrelic 和其他形式的 MySQL 日志记录中看到了这一点,但我找不到关于如何做到这一点的库或其他经过良好测试的信息源。 任何有用的代码或线索可用?
我已经考虑过正则表达式和简单的解析形式,但得到的解决方案似乎很脆弱。 特别是当考虑子查询和像“with”和子查询这样的结构时。 这就是为什么我要寻找一个可以进行战斗测试的库或代码的原因。
如果您可以通过 PHP 记录它,那么使用准备好的语句并将其包装在一个函数或类中。 通过这种方式,您可以在没有任何“真实数据”的情况下记录准备好的语句
它可能看起来像这样:
public function prepare($sqlStatement)
{
$stmt = $this->mysqli->prepare($sqlStatement);
if (!$stmt) {
// Log an error here
return false;
} else {
// Log your statement here
return $stmt;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.