Я нахожусь в процессе портирования модуля Drupal на Zen Cart и мне нужно конвертировать некоторые sql запросы. Из-за количества элементов, которые необходимо преобразовать, я не могу просто поменять один элемент, а затем проверить, правильно ли я это сделал, но я не хочу делать их все, а потом обнаружил, что допустил ошибку по каждому элементу. В прошлом я проделал довольно много OSCommerce с портами Zen Cart, но это моя первая попытка использовать порт 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, которые могут подтвердить, что это правильно, или указать мне правильное направление, если это не так?
Вы близки — просто измените имена полей и приведите идентификатор клиента как int. Вы также не иметь ВЫБРАТЬ КАК, если вы не хотите — вы можете просто использовать имена полей, как они есть, и изменять их при настройке массива.
function 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;
}
Других решений пока нет …