Php 如何在保留语句的同时伪造sql数据而不注释服务器端代码?

Php 如何在保留语句的同时伪造sql数据而不注释服务器端代码?,php,sql,mysql,Php,Sql,Mysql,我必须对某些字段使用硬编码值,因为目前我们无法访问实际数据 当我们获得访问权限时,我不想经历很多取消注释的工作 除了使用“25”作为ratecode的别名外,是否可以保持此语句的原样 IF(special.ratecode IS NULL, br.ratecode, special.ratecode) AS ratecode, 我有大约8条类似于此的IF语句,我只是太懒了(即使使用vim),无法在逐行注释每个IF语句时重新追加。我必须这样做: $sql = 'SELECT u.*,';

我必须对某些字段使用硬编码值,因为目前我们无法访问实际数据

当我们获得访问权限时,我不想经历很多取消注释的工作

除了使用“25”作为
ratecode
的别名外,是否可以保持此语句的原样

   IF(special.ratecode IS NULL, br.ratecode, special.ratecode) AS ratecode,
我有大约8条类似于此的IF语句,我只是太懒了(即使使用vim),无法在逐行注释每个IF语句时重新追加。我必须这样做:

$sql = 'SELECT u.*,';

// IF ( special.ratecode IS NULL, br.ratecode, special.ratecode) AS ratecode
$sql.= '25 AS ratecode';

你不能用测试数据创建一个假的数据库吗?这就是我通常进行数据库相关测试的方式。如果你试图写“真实”的单元测试或一些东西,你可能想考虑为你的DB层制作模拟对象,但是IMHO通常是多余的。如果您能够调出SQL引擎,您甚至可以调出类似SQLite的东西用于本地测试。

您不能创建一个包含测试数据的假数据库吗?这就是我通常进行数据库相关测试的方式。如果你试图写“真实”的单元测试或一些东西,你可能想考虑为你的DB层制作模拟对象,但是IMHO通常是多余的。如果您能够替换SQL引擎,您甚至可以替换类似SQLite的东西进行本地测试。

我会将所有这些内容放到数据库的视图中,然后在暴露“真实”数据时调整逻辑:这样您就不必修补任何应用程序代码

e、 g.最初:

create view myStuff as
select 25 as my_val
.....
from my_table
之后将替换为:

create view myStuff as
select my_val
.....
from my_table

我会将所有这些内容放入数据库的视图中,然后在暴露“真实”数据时调整逻辑:这样您就不必修改任何应用程序代码

e、 g.最初:

create view myStuff as
select 25 as my_val
.....
from my_table
之后将替换为:

create view myStuff as
select my_val
.....
from my_table

如果您正在使用大量这些SQL语句,您可以在应用程序的目录中放置一个小文件;在启动脚本时,它将检查该文件是否存在,如果找到该文件,它将设置一个变量,如
$isproduction
TRUE
;否则,
FALSE
。然后,对于每个SQL语句(具有PCRE功能的IDE对于这样的东西非常有用),您可以执行以下操作

if ($isproduction === FALSE) {
    //big long SQL statement here
}
else {
    //create false data here
}

如果您正在使用大量这些SQL语句,您可以在应用程序的目录中放置一个小文件;在启动脚本时,它将检查该文件是否存在,如果找到该文件,它将设置一个变量,如
$isproduction
TRUE
;否则,
FALSE
。然后,对于每个SQL语句(具有PCRE功能的IDE对于这样的东西非常有用),您可以执行以下操作

if ($isproduction === FALSE) {
    //big long SQL statement here
}
else {
    //create false data here
}

阅读编写可测试代码,模拟数据源和结果集


阅读编写可测试代码,模拟数据源和结果集

我想基本上保留我的长查询,而不使用服务器端注释,而不是创建一个完整的假数据库。。。难道你不能运行数据库创建脚本,然后将“25”插入到相关表中吗?如果你的首要任务是生成可读的、可维护的、经过良好测试的代码,那么创建一个虚拟数据库就是最好的选择。否则,当您返回并替换代码时,可能会产生新的bug。如果您坚持自己的方法,您可以尝试使用
$sql='SELECT u.*'。((ON_PROD)?'If(special.ratecode为NULL,br.ratecode,special.ratecode)'SELECT 25'。'AS ratecode'我想基本上保留我的长查询而不使用服务器端注释,而不是创建一个完整的假数据库。你让它听起来像是一项艰巨的任务。。。难道你不能运行数据库创建脚本,然后将“25”插入到相关表中吗?如果你的首要任务是生成可读的、可维护的、经过良好测试的代码,那么创建一个虚拟数据库就是最好的选择。否则,当您返回并替换代码时,可能会产生新的bug。如果您坚持自己的方法,您可以尝试使用
$sql='SELECT u.*'。((ON_PROD)?'If(special.ratecode为NULL,br.ratecode,special.ratecode)'SELECT 25'。'AS ratecode'你太懒了,不能取消注释8行代码?现在的孩子们……你懒得去取消注释8行代码?现在的孩子们。。。。