gpt4 book ai didi

php - 在 Zend_db_select 中更改表名

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:43 24 4
gpt4 key购买 nike

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'

我有这个在 php 中生成的 SQL 查询。我想多次调用这个查询,稍作改动;我正在更改每个请求的 ColumnThatChanges。

执行此操作的最佳/最快方法是什么?使用 str_replace?每次都调用整个字符串?使用某种类型的类来生成我的 SQL 语句?

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

$somequery = $this->db->select();
$somequery->from(Table, array('SUM(Table.ColumnThatChanges) AS Count', 'Table.B as Param'))
->where('C = ?', $Variable)
->where('B = ?', $Variable2)
->where('Date > ?', $start_date)
->where('Date < ?', $end_date);

我没有成功更改查询的 ColumnThatChanges 部分,也许我做错了?

最佳答案

如果可以使用PDO扩展,则有prepared statements为此

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

// insert another row with different values
$name = 'two';
$value = 2;
$stmt->execute();

在 Zend Framework 中可以使用 Zend_Db_Statement 实现

UPD如果您想更改列,如其所述here , 您可以使用 columns 方法或 from 方法的第二个参数;

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

然后,如果您想更改任何内容,您只需保留您的 $select 对象即可。

UPD-2 Bill Karwin 为问题的最后一个版本提供了更好的答案。请看。

关于php - 在 Zend_db_select 中更改表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24369507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com