Не удается вставить значение внешнего ключа в таблицу ссылок - PullRequest
5 голосов
/ 04 января 2012

В настоящее время я пытаюсь вставить данные в таблицу с именем "customer_quote" , эта таблица действует как таблица связи между таблицей "customer" и "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 <--- Не работает! </li>

Вот код:

    //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')");

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

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

Как вы видите, обратная связь по ошибке бесполезна, поэтому после трех часов тестирования я пришел к выводу, что проблема заключается в моем столбце "cid" в таблице "цитата клиента".

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

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

enter image description here

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

Есть идеи, как это решить.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 04 января 2012

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

$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
2 голосов
/ 04 января 2012

у вас пропало) в конце вашей вставки ...

//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')");

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

2 голосов
/ 04 января 2012

Вы потеряли двойную кавычку и пропустили паренс

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

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

до

$database->query("INSERT INTO customer_quote (cid)
    Values ('$customer->cid')");
1 голос
/ 04 января 2012

Вам не хватает скобки:

"INSERT INTO customer_quote (cid) Values ('$customer->cid')"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...