Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос проходит в PMA но не проходит из пхп, помогите разобраться с внешними ключами 
:(
    Опции темы
kr3v3tkus
Дата 1.10.2008, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



branches
  • ID    int(11)
  • Name    binary(30)
  • Adress    varchar(70)
  • Phone    varchar(20)
employees
  • ID    int(3)
  • F    binary(20)
  • I    binary(20)
  • O    binary(20)
  • Position    binary(20)
  • Salary    int(5)
  • Adress    binary(70)
  • Phone    binary(20)
  • Branch    int(2) - это внешний ключ
Код

<?php
error_reporting(E_ALL);

$link = mysql_connect("localhost", "root", "1")
or die("Не могу подключиться");
print ("Соединение выполнено");

mysql_select_db('bank', $link) or die ('Не могу выбрать БД');

$query = "insert into branches(`ID`, `Name`, `Adress`, `Phone`) values(Null, 'Филиал №1', 'Россия, Новороссийск, Герцена 13', '26-52-11');";

$result=mysql_query($query);

mysql_close($link);

?>


Если в пма всунуть 
Код
insert into branches(`ID`, `Name`, `Adress`, `Phone`) values(Null, 'Филиал №1', 'Россия, Новороссийск, Герцена 13', '26-52-11');
 - всё ок. Я думаю это изза внешнего ключа, тк при создании новых записей в таблице branches, пма ругался на то, что в таблице employees никто не ссылается на эту запись внешним ключом. Я создал в employees ещё запись, в которой есть ссылка на 2ой ID таблицы branches, и вот собственно сабж

да, и извиняюсь за оффтоп - просто стыдно уже писать про кодировку... вобщем перелопатил все статьи и мануалы про set names итд, ничего не помогает, указываю одинаковые кодировки и в my.ini дефолтом, и при создании таблицы, и в самом скрипте - ничего не помогает, пришлось binary ставить. версия php 5.2.1, mysql 4.3.3.2 подскажите что почитать на эту тему пожалуйста
PM MAIL   Вверх
sTa1kEr
Дата 1.10.2008, 09:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



kr3v3tkus, Об ошибках 
Цитата

Если происходят проблемы с mysql, то надо вызывать функцию mysql_error() которая напишет, какие проблемы были в запросе.

PM MAIL   Вверх
kr3v3tkus
Дата 1.10.2008, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



sTa1kEr, 
спасибо smile действительно стыдно становится после такого
Цитата

P.S. Я в курсе, что из тех, кому он предназначается, этот текст не прочтет никто. Но наболело =)


но просто времени нет чтобы полноценно сесть и изучить :( а проблема была в том, что писало, что не хочет влезать в поле адресс, хотя я вставлял 32 символа в ячейку с 70 символами, убрал кодировку из varchar cp1251 в бинари и пошло... и всё же я извиняюсь - но что это за гадкие ошибки с кодировкой? Право не знаю уже что и думать...  вот ещё - отличительный симптом - из скрипта всё добавляется, а из пма если сделать запрос - добавляет иероглифами
PM MAIL   Вверх
sTa1kEr
Дата 2.10.2008, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



Цитата(kr3v3tkus @  2.10.2008,  00:41 Найти цитируемый пост)
убрал кодировку из varchar cp1251 в бинари 

Нет такой кодировки - бинари. Есть только бинарный тип данных и сравнение в бинарном режиме.
Цитата(kr3v3tkus @  2.10.2008,  00:41 Найти цитируемый пост)
но что это за гадкие ошибки с кодировкой? 

Да все же предельно просто. Есть всего два простейших правила:
1. Для всех таблиц указываешь один подходящий collation (саму кодировку можно не указывать, т.к. collation содержит ее в себе) в которой будут храниться и сортироваться данные. 
Код

CREATE TABLE ... COLLATE utf_unicode_ci

2. При каждом коннекте к этой базе устанавливаешь (через SET NAMES) кодировку в которой работает сам скрипт (совершенно не обязательно эта кодировка должна соответствовать кодировки в которой хранятся данные)
Код

<meta http-equiv="content-type" content="text/html; charset=cp1251" />
...
<?php
mysql_query('SET NAMES cp1251');


Все! И нету никакой мистики.


Цитата(kr3v3tkus @  1.10.2008,  02:55 Найти цитируемый пост)
подскажите что почитать на эту тему пожалуйста 

http://dev.mysql.com/doc/refman/4.1/en/charset.html
PM MAIL   Вверх
kr3v3tkus
Дата 4.10.2008, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 8.3.2008

Репутация: нет
Всего: 1



sTa1kEr, 
ну я и не говорил что это кодировка, просто пишу хуже детсада smile а вообще большое спасибо - сам бы год разбирался с такими особенностями smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.