Ошибка при вызове процедуры из PHP

xVansX

Новичок
CALL add_new_item( '921023D050', 'HYUNDAI', '', '', '0', '0', '0', '0', '8237 ', '0', '0', '2012-07-26' );
В PHP выдает следующее

Cannot add or update a child row: a foreign key constraint fails (`clubauto_local`.`zap_stocks`, CONSTRAINT `fk_zap_stocks_supplier` FOREIGN KEY (`supplier`) REFERENCES `zap_stocks_supplier` (`id`))
Но если процедуру вызывать из Navicat, то все работает нормально.

Если кто сталкивался, помогите пожалуйста.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
xVansX
Про внешние ключи слышал?
 

xVansX

Новичок
xVansX
Про внешние ключи слышал?
Говорю же что если запускаешь с навиката это работает и спокойно добавляет.
Да там внешние ключи.
Я сам базу создавал.
В навикате или консоле это работает. А вот с PHP выдает такую ошибку
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
xVansX
Ты уверен, что запросы у тебя в php и с консоли идентичны? И что у тебя не выставляется нигде disable foreign key cheks?
 

xVansX

Новичок
Да так как я копирую этот ошибочный запрос который выдает PHP

PHP


MySQL


и запускаю в навикате и тот нормально все добавляет
 

shureen

Милорд Лось Кристофер
какой драйвер используется в DB_driver.php? подобные проблему были при использовании mysql_ функций, и решились в mysqli
 

xVansX

Новичок
какой драйвер используется в DB_driver.php? подобные проблему были при использовании mysql_ функций, и решились в mysqli
изначально вытсавлен был mysql
Поменял в конфиге на mysqli
толку не было.

или я может не так вызываю

$sql = '
CALL add_new_item(
"'.$number.'",
"'.$make.'",
"'.$description.'",
"'.$description_russian.'",
"'.$weight.'",
"'.$height.'",
"'.$width.'",
"'.$length.'",
"'.$sup_code.'",
"'.$quantity.'",
"'.$price.'",
"'.$date.'"
)';
$this->db->query($sql);
 

Вурдалак

Продвинутый новичок
Проверь явно наличие записи в zap_stocks_supplier. Выглядит так, как будто разные БД.
 

Вурдалак

Продвинутый новичок
А тип у поля какой? Нормальная СУБД ругнулась в первую очередь на левое значение, подставляемое в поле.

А хотя да, это же MySQL. Счастливой отладки, суки! (c)
 

xVansX

Новичок
значение то не левое
значение с лишним пробелом 8237 - 5 символом varchar
 

Вурдалак

Продвинутый новичок
Т.е. это нормально, что числовой идентификатор пишется в строковое поле?
 
Сверху