Перейти к содержанию
Форум поддержки пользователей VamShop

Проблемы с SET NAMES


Рекомендуемые сообщения

Доброй ночи!

Помогите решить такую проблему.

Вставил в код файла create_account.php код, который на этапе создания нового пользователя сайта выгружает информацию по нему в файл DBF в определенном каталоге на хостинге. Все четко работает практически в любом месте этого файла. Но стоит мне расскомментировать строку с vam_db_query("set names cp1251"), как у меня теряется сессия клиента при выходе обработчика из этого файла (он после регистрации не попадает в свою корзину как должно быть, ему нужно повторно будет входить на сайт под своим логином, чтобы увидеть содержимое корзины):

(код привожу)

$sql_text = "

SELECT

t1.customers_id as id,

t1.customers_firstname as name1,

t1.customers_secondname as name2,

t1.customers_lastname as name3,

ex.value as card,

t1.customers_email_address as email,

t1.customers_telephone as phone,

t2.entry_street_address as address,

t2.entry_suburb as suburb,

t2.entry_postcode as postcode,

t2.entry_city as city,

t2.entry_state as state,

t3.countries_name as country,

t4.zone_name as state2

FROM customers as t1

LEFT JOIN address_book as t2 ON t2.address_book_id = t1.customers_default_address_id

LEFT JOIN countries as t3 ON t3.countries_id = t2.entry_country_id

LEFT JOIN zones as t4 ON t4.zone_id = t2.entry_zone_id

LEFT JOIN customers_to_extra_fields as ex ON ex.customers_id = t1.customers_id

WHERE ex.fields_id = 1 and t1.customers_id = ".(int) $_SESSION['customer_id'];

$fields = array(

array("id", "N", 8, 0),

array("name1", "C", 32),

array("name2", "C", 32),

array("name3", "C", 32),

array("card", "N", 8, 0),

array("email", "C", 50),

array("phone", "C", 15),

array("address", "C", 100),

array("suburb", "C", 32),

array("postcode", "C", 6),

array("city", "C", 32),

array("state", "C", 32),

array("country", "C", 32),

array("state2", "C", 32));

$db = dbase_create("obmen/out/usr_".(int) $_SESSION['customer_id'].".dbf", $fields);

dbase_close($db);

//open connection to database

$db = dbase_open("obmen/out/usr_".(int) $_SESSION['customer_id'].".dbf", 2);

//$customer_query = vam_db_query("set names cp1251");

$customer_query = vam_db_query($sql_text);

//$order_check = vam_db_fetch_array($customer_query);

while ($listing = vam_db_fetch_array($customer_query, true)) {

$newRecord = array($listing['id'],

$listing['name1'],

$listing['name2'],

$listing['name3'],

$listing['card'],

$listing['email'],

$listing['phone'],

$listing['address'],

$listing['suburb'],

$listing['postcode'],

$listing['city'],

$listing['state'],

$listing['country'],

$listing['state2']);

dbase_add_record($db, $newRecord);

}

//print_r($newRecord);

dbase_close($db);

Ссылка на сообщение
Поделиться на другие сайты

победил только таким образом, - вставил преобразование iconv('utf-8', 'cp1251', $listing['name1']) в конце кода.

p.s. может кому пригодится. Я день на эту херь убил ... :(

Ссылка на сообщение
Поделиться на другие сайты

Вообще всё логично, у Вас уже ведь есть подключение к базе, уже установлена кодировка, нельзя ведь set names ещё раз устанавливать, насколько я понимаю, да и это вроде логично, если так подумать.

iconv действительно лучше использовать.

Хорошо, что разобрались.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...