Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Zend_db_select中更改表名_Php_Mysql_Sql_Zend Framework - Fatal编程技术网

Php 在Zend_db_select中更改表名

Php 在Zend_db_select中更改表名,php,mysql,sql,zend-framework,Php,Mysql,Sql,Zend Framework,我有一个用php生成的SQL查询。我想多次调用此查询,但有一点变化;我正在改变每一个请求 做这件事最好/最快的方法是什么?使用str_替换?每次调用整个字符串?是否使用某种类型的类来生成我的SQL语句 我目前正在使用Zend以这种方式生成它: SELECT SUM(Table.ColumnThatChanges) AS 'Count', Table.B as 'Param' FROM Table WHERE Table.C = 4 AND Table.B = 'Something'

我有一个用php生成的SQL查询。我想多次调用此查询,但有一点变化;我正在改变每一个请求

做这件事最好/最快的方法是什么?使用str_替换?每次调用整个字符串?是否使用某种类型的类来生成我的SQL语句

我目前正在使用Zend以这种方式生成它:

SELECT SUM(Table.ColumnThatChanges) AS 'Count', Table.B as 'Param'
FROM Table
WHERE Table.C = 4
    AND Table.B = 'Something'
    AND Table.Date BETWEEN '2014-01-01 00:00:00' AND '2014-06-30 00:00:00'
$somequery=$this->db->select();
$somequery->from(表,数组('SUM(Table.columnthatchchanges)作为计数,'Table.B作为参数'))
->其中('C=?',$Variable)
->其中('B=?',$Variable2)
->其中('Date>?',$start\u Date)
->其中(“日期<?”,$end_日期);

我没有成功地更改更改部分查询的列,可能是我做错了吗?

如果您可以使用
PDO
扩展,则有以下几种方法

然后,如果要更改任何内容,只需保留
$select
对象


UPD-2比尔·卡温为这个问题的最后一个版本提供了更好的答案。请查看它。

如果您可以使用
PDO
扩展,则有以下几种方法可供选择:

然后,如果要更改任何内容,只需保留
$select
对象


UPD-2比尔·卡温为这个问题的最后一个版本提供了更好的答案。请查看它。

如果使用PDO,可以绑定参数。所以,循环遍历您的条目,并使用不同的数据执行。我不确定这是否清楚。。。等等,巴尔德斯有个例子。但是,您也可以传递数组以执行:

$select = $db->select()
         ->from(array('p' => 'products'), 'product_id')
         ->columns('product_name');

如果使用PDO,则可以绑定参数。所以,循环遍历您的条目,并使用不同的数据执行。我不确定这是否清楚。。。等等,巴尔德斯有个例子。但是,您也可以传递数组以执行:

$select = $db->select()
         ->from(array('p' => 'products'), 'product_id')
         ->columns('product_name');

我为Zend Framework 1.0编写了Zend_Db_Select。没有方法替换选择列表中的列,只能追加或插入列

不过,创建一个自定义类来添加此功能并不困难

$stuff = array(':name' => 'one', ':value' => 1);
$stmt->execute($stuff);
测试清除列并添加不同的列:

class My_Db_Select extends Zend_Db_Select
{
  public function clearColumns() {
    $this->_parts[self::COLUMNS] = array();
  }
}
输出:

$sel = new My_Db_Select($db);
$sel->from("foo", array());

$sel->columns(array("SUM(foo.red)", "id"), "foo");
echo $sel . "\n";

$sel->clearColumns();

$sel->columns(array("SUM(foo.blue)", "id"), "foo");
echo $sel . "\n";

我为Zend Framework 1.0编写了Zend_Db_Select。没有方法替换选择列表中的列,只能追加或插入列

不过,创建一个自定义类来添加此功能并不困难

$stuff = array(':name' => 'one', ':value' => 1);
$stmt->execute($stuff);
测试清除列并添加不同的列:

class My_Db_Select extends Zend_Db_Select
{
  public function clearColumns() {
    $this->_parts[self::COLUMNS] = array();
  }
}
输出:

$sel = new My_Db_Select($db);
$sel->from("foo", array());

$sel->columns(array("SUM(foo.red)", "id"), "foo");
echo $sel . "\n";

$sel->clearColumns();

$sel->columns(array("SUM(foo.blue)", "id"), "foo");
echo $sel . "\n";

我忘了指定我正在使用Zend。我目前正在编写的代码使用Zend_Db_Select。这会是一个问题吗?稍有不同。但我不确定它是否允许我更改声明的一部分,一旦我已经声明了,我就尝试了,但没有多大成功。“我别无选择,只能回忆起整件事,这让我有点恼火。”Sefam在网站上点击了链接answer@Sefam是否要更改列,而不是列值?那么,
str\u replace
是您最好的选择。我已经更新了我的问题,很抱歉造成混淆。我会确保下次包括所有内容。我忘了指定我正在使用Zend。我目前正在编写的代码使用Zend_Db_Select。这会是一个问题吗?稍有不同。但我不确定它是否允许我更改声明的一部分,一旦我已经声明了,我就尝试了,但没有多大成功。“我别无选择,只能回忆起整件事,这让我有点恼火。”Sefam在网站上点击了链接answer@Sefam是否要更改列,而不是列值?那么,
str\u replace
是您最好的选择。我已经更新了我的问题,很抱歉造成混淆。我会确保下次包括所有内容。我忘了指定我正在使用Zend。我目前正在编写的代码使用Zend_Db_Select。这会是个问题吗?啊,这和这个问题很相似。不能将列名绑定为参数。Bounds参数只能在SQL表达式中通常使用字符串或数值常量的情况下使用。我忘记指定我使用的是Zend。我目前正在编写的代码使用Zend_Db_Select。这会是个问题吗?啊,这和这个问题很相似。不能将列名绑定为参数。Bounds参数只能在SQL表达式中通常使用字符串或数值常量的情况下使用。