2014-01-18 50 views
-3

表1沿着更新的外鍵:customer_details如何自動與主鍵

c_id(primary key) AUTO INCREMENT 
c_name 
c_phone 
(innoDB) 

表2:服務

si_id(primary key) AUTO INCREMENT 
c_id2(foreign key) references customer_details(c_id) on delete cascade on delete update 
si_1 
si_2 
si_3 
si_4 
si_5 
(innoDB) 

我寫PHP代碼更新插入值SI_1,SI_2,SI_3 ,表2(服務)的si_4,si_5。

每當我值插入表2通過HTML頁面我得到一個錯誤說 「錯誤:無法添加或更新子行,外鍵約束失敗」

下面是我的PHP代碼:

$value1=mysql_insert_id(); 
$value2=$_POST['si_1']; 
$value3=$_POST['si_2']; 
$value4=$_POST['si_3']; 
$value5=$_POST['si_4']; 
$value6=$_POST['si_5']; 



$query="insert into service_initiation(c_id2,si_id,si_1,si_2,si_3,si_4,si_5) values ('$value1','','$value2','$value3','$value4','$value5','$value6')"; 
mysql_query($query); 
+1

我假設在'$ value1'聲明之上,你有一個插入客戶詳細信息表的查詢? – Lee

+0

我很驚訝你得到一個外鍵錯誤。我認爲你應該得到一個語法錯誤,因爲你在列表中有'$ value1','c_id2'應該在那裏。 – Barmar

+0

@bamar是的,必須是c_id2,我已經改變了它,但agian得到相同的錯誤。 – Automagication

回答

1

試試這個:

$query="insert into service_initiation(c_id2,si_1,si_2,si_3,si_4,si_5) values ('$value1','$value2','$value3','$value4','$value5','$value6')"; 

你應該離開si_id出列的列表,所以它會被自動分配通過自動增加盟友。並且您需要將c_id2設置爲分配給引用表的ID。