0

在我的 php 脚本中,我有这个 mysql 查询:

$sql = "CREATE OR REPLACE VIEW search_best_rates_view AS SELECT *, 
         ".$this->get_rates(187,'2012-12-14','2012-12-18')."
          as my_best_rate FROM search_result_view 
       ";

mysql_query ( $sql );

效果很好(1,5s 查询时间)。

问题:有没有办法替换 php 函数中的任何常量

.$this->get_rates($i,$a,$d)

例如在这个例子中:'187' 带有一个 mysql 行值

 search_result_view.my_ID
4

1 回答 1

0

诸如数据定义语言 (DDL) 语句CREATE OR REPLACE VIEW在传递给 MySQL 服务器以运行时不能包含任何绑定变量。

因此,您可以使用 PHP(或任何其他客户端语言)做任何您想做的事情来创建 DDL 语句。如果愿意,您可以从 MySQL 表中获取值。但是当您将 DDL 语句作为查询发出时,它必须是一个干净的文本字符串。

看起来您正在尝试将 DDL 放在一起,如下所示:

 CREATE OR REPLACE VIEW search_best_rates_view AS 
           SELECT *, 
                  123.45 as my_best_rate 
             FROM search_result_view

那可行。像这样的东西也会这样:

 CREATE OR REPLACE VIEW search_best_rates_view AS 
           SELECT *, 
                  (SELECT MIN(rate) FROM rates) as my_best_rate 
             FROM search_result_view

但是,从你的问题来看,你想要做什么并不完全清楚。

于 2012-12-15T02:51:40.457 回答