变量中字符串中的变量字符串?? PHP

时间:2013-04-08 08:28:40

标签: php mysql string variables

我正在使用vary子句对重复发生的sql select进行编码。在子句中我有一个PHP变量(以后应该在WHILE中替换。

我的代码:

$custaccount_id_clause = "(SELECT DISTINCT(custaccount_id) AS custaccount_id FROM accountcomms_def_tbl a WHERE subagent_def_id = " . '\'$interest_id\'' . " AND agentorder > (SELECT agentorder FROM accountcomms_def_tbl WHERE subagent_def_id = '$subagent_def_id' and custaccount_id = a.custaccount_id))";

$ subagent_def_id的工作原理已经定义了。

$ interest_id不起作用,因为它没有定义。我试图在稍后循环中使用$ interest_id替换它,我在其中调用$ custaccount_id_clause作为while循环的一部分:

    $allresidual_sql = mysql_query("SELECT SUM(txn_value) as txn_sum, COUNT(DISTINCT(custaccount_id)) AS accounts FROM account_stmnt_tbl WHERE txn_type IN ('Fixed Residual','Variable Residual','One Time Adjustment') AND custaccount_id IN ". $custaccount_id_clause)or die(mysql_error());
  1. 在$ custaccout_id子句中,我有文本'$ interest_id',我希望PHP替换其中的变量。它不是替换变量。

  2. 这是我正在为演示编写的一个快速示例应用程序,请不要告诉我我正在使用哪个API,因为我不会编写生产中的任何内容! :)

1 个答案:

答案 0 :(得分:0)

使用你想要使用的第一个变量($ interest_id)的一种简单方法是测试它,并以这样的直接方式在内部放置一个null而不是变量:

WHERE subagent_def_id = '" . ($interest_id ? $interest_id : null) . "' AND agentorder

这可以防止您收到有关未定义的变量/属性的错误。

替换部分是让我感兴趣的...你的意思是,在你的结构中的某一点,用$interest_id代替$my_other_variable吗?如果将整个SQL查询建模为字符串,并且根据给定的条件重新编写它,则可以实现此目的。

这样的东西可以起作用(这只是一个简单的测试,如果你认为合适,可以根据你的需要进行调整):

$query = ($a ? "SELECT * FROM `products` WHERE `price` > '{$a}';" : "SELECT * FROM `products` WHERE `date_added` < '{$b}' AND price > 20;");

如果我理解正确的话。否则,我怀疑你想使用eval()函数来解析你编码的字符串,并让PHP根据你的意愿处理你的变量。

希望有所帮助