2012-01-04 2 views
5

В настоящее время я пытаюсь вставить данные в таблицу под названием «customer_quote», эта таблица действует как таблица, связывающей между «клиентом» таблицей и «customer_tariffs " таблица. Он также записывает пользователя, который подал данные через таблицу «пользователь».Невозможно вставить значение внешнего ключа в таблице ссылок

Вот схема моего дб:

http://i.imgur.com/LOG1T.png enter image description here

и вот скриншот таблицы, которая не позволяет мне вставить в него.

http://i.imgur.com/i2wiU.png

enter image description here

Это процесс, в том, как вставить в мой дб:

  1. данных Вставка в таблицу клиентов
  2. Получить идентификатор строки, используя mysql_insert_id
  3. Вставьте данные в customer_quote < --- Не работает!

Вот код:

//code above this inserted data into customer table 

//get id of row where data was just inserted 
$sustomer->cid = mysql_insert_id($db); 

//insert into customer_quote table 
$database->query("INSERT INTO customer_quote (cid) 
     Values ('$customer->cid')"); 

** Новое сообщение об ошибке **

'Cannot add or update a child row: a foreign key constraint fails (quote_system . customer_quote , CONSTRAINT fk_customer_quote_customer FOREIGN KEY (cid) REFERENCES customer (id) ON DELETE NO ACTION ON UPDATE NO ACTION)'

Как вы можете видеть, что обратная связь ошибки бесполезна, так примерно через три часа тестирование I пришли к выводу, что проблема - это мой столбец «cid» в таблице «цитата клиента».

Он принимает только определенные значения, однако моя собственная переменная php имеет правильное значение, которое доступно для вставки через phpmyadmin, как вы можете видеть на скриншоте ниже.

http://i.imgur.com/eEFou.png

enter image description here

Так должно быть ограничений или еще что-то в моей таблице, останавливая меня?

Любые идеи, как решить эту проблему.

Спасибо!

+0

Любить подробное сообщение .... Я просто надеюсь, что мой ответ неверен ... потому что вы могли бы сэкономить все это, добавив ')' ..... – ManseUK

+0

1. Вы не видите использовать переменную cid, которую вы только что получили? Но вместо этого клиент-> cid? Я полагаю, что они решают одно и то же? 2. Я не эксперт по PHP, но не должен читать ваш код: «INSERT INTO customer_quote (cid) Значения (« $ customer-> cid »)») - вам не хватает скобки – BeRecursive

+0

извините, что это был тип, i Рука набрала код, а не вставлять в него! – kaleeway

ответ

2

Я действительно надеюсь, что его простая опечатка в вашем вопросе, но ваш запрос является неправильным:

$database->query("INSERT INTO customer_quote (cid) 
     Values ('$customer->cid'"); 

должен быть

$database->query("INSERT INTO customer_quote (cid) 
     Values ('$customer->cid')"); // added closing bracket on values 
+0

Спасибо, но теперь я получаю эту ошибку: «Не добавляйте или не обновляйте дочернюю строку: ограничение внешнего ключа не выполняется (' quote_system'.'customer_quote', CONSTRAINT 'fk_customer_quote_customer' FOREIGN KEY (' cid') ССЫЛКИ 'customer' ('id') ON УДАЛИТЬ НЕТ ДЕЙСТВИЙ НА ОБНОВЛЕНИИ НЕТ ДЕЙСТВИЙ) 'i – kaleeway

+0

' uid' также требуется? – ManseUK

+0

да, поэтому я думаю, что мне нужно вставить это прямо сейчас. – kaleeway

2

Вы неуместны в двойных кавычках и пропустили скобки

Изменения строка:

$database->query("INSERT INTO customer_quote (cid) 
    Values ('$customer->cid'"); 

к

$database->query("INSERT INTO customer_quote (cid) 
    Values ('$customer->cid')"); 
+0

Спасибо, но теперь я получаю эту ошибку: «Не могу добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (' quote_system'.'customer_quote', CONSTRAINT 'fk_customer_quote_customer' FOREIGN KEY (' cid') ССЫЛКИ 'customer' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION) 'i – kaleeway

+0

@loosebruce: значение' $ customer-> cid' не существует в таблице клиентов. – Toto

2

У вас отсутствует) в конце вашей вставки ...

//insert into customer_quote table 
$database->query("INSERT INTO customer_quote (cid) Values ('$customer->cid'"); 

должен быть

//insert into customer_quote table 
$database->query("INSERT INTO customer_quote (cid) Values ('$customer->cid')"); 

Кстати, хороший пост с изображениями и т.д. ..

+0

Спасибо, но теперь я получаю эту ошибку: «Невозможно добавить или обновить дочернюю строку: сбой ограничения внешнего ключа (' quote_system'.'customer_quote', CONSTRAINT 'fk_customer_quote_customer' FOREIGN KEY (' cid') ССЫЛКИ 'customer' (' id') ON УДАЛИТЬ НЕТ ДЕЙСТВИЙ ПО ОБНОВЛЕНИЮ НЕТ ACTION) 'i – kaleeway

+0

Ну, это говорит о том, что идентификатор недействителен на основе таблицы клиентов. Вероятно, то же самое произойдет и с таблицей вашего пользователя, потому что вы вызываете NULL в ненулевой таблице. –

1

Вам не указан parenthese:

"INSERT INTO customer_quote (cid) Values ('$customer->cid')" 
Смежные вопросы