【问题标题】:Drupal to zen cart sql query conversionDrupal 到 zen cart sql 查询转换
【发布时间】:2018-01-12 23:39:03
【问题描述】:

我正在将 Drupal 模块移植到 Zen Cart,需要转换一些 sql 查询。由于需要转换的项目数量众多,我不能简单地更改一个项目然后测试我是否正确地完成了它,但我不想全部完成它们然后发现我在每个项目上都出错了。过去我已经为 Zen Cart 移植了一些 OSCommerce,但这是我第一次尝试 Drupal 移植。

原来的Drupal代码是

function getCustomerData($customerId) {

    $sql = "SELECT " . $this->fields['customer_firstname'] . " AS firstname, " . 
        $this->fields['customer_lastname'] . " AS lastname, " .
        $this->fields['customer_email'] . " AS email" .
        " FROM " . $this->tables['customers'] .
        " WHERE " . $this->fields['customer_id'] . " = '$customerId'";

    $query = $this->dbQuery($sql);

    if ($this->dbNumRows($query)) {
        $row = $this->dbFetchArray($query);
        $customerData = array(
            'firstname' => $row['firstname'],
            'lastname'  => $row['lastname'],
            'email'     => $row['email']
        );

    } else {
        $customerData = false;
    }

    return $customerData;
}

我对转换后的代码的最佳猜测是

function getCustomerData($customerId) {
    global $db;

    $query = $db->Execute("SELECT customers_firstname AS firstname, customers_lastname AS lastname, customers_email AS email
                           FROM " . TABLE_CUSTOMERS . "
                           WHERE customers_id = ". $customerId ."");

    if ($query->RecordCount()){
        $customerData = array(
            'firstname' => $query->fields['firstname'],
            'lastname'  => $query->fields['lastname'],
            'email'     => $query->fields['email']
        );

    } else {
        $customerData = false;
    }

    return $customerData;
}

这里有任何 Drupal 和 Zen Cart 专家可以确认这是否正确,或者如果不正确,请指出我正确的方向?

【问题讨论】:

    标签: php mysql drupal drupal-7 zen-cart


    【解决方案1】:

    您已经接近了 - 只需调整字段名称并将客户 ID 转换为 int。如果您不想这样做,您也没有 SELECT AS - 您可以按原样使用字段名称并在设置数组时更改它们。

    函数 getCustomerData($customerId) { 全局 $db;

    $query = $db->Execute("SELECT customers_firstname, customers_lastname, customers_email_address 
                           FROM " . TABLE_CUSTOMERS . "
                           WHERE customers_id = '". (int)$customerId ."'");
    
    if ($query->RecordCount()){
        $customerData = array(
            'firstname' => $query->fields['customers_firstname'],
            'lastname'  => $query->fields['customers_lastname'],
            'email'     => $query->fields['customers_email_address']
        );
    
    } else {
        $customerData = false;
    }
    
    return $customerData;
    

    }

    【讨论】:

    • 谢谢斯科特。谁能想到 ThatSoftwareGuy 会回答我的问题。如果你已经回复了,我不怀疑回复是正确的!
    猜你喜欢
    • 2019-07-12
    • 2023-03-14
    • 1970-01-01
    • 2015-03-20
    • 2019-08-16
    • 1970-01-01
    • 2018-08-12
    • 2011-10-04
    • 2011-11-20
    相关资源
    最近更新 更多