2015-07-13 72 views
0

我有一個簡單的php屬性租賃系統CMS。現在我堅持向數據庫添加新屬性。帶有INSERT語句的簡單PHP CMS

我的數據庫:

properties: propertyId, imageId, town, num of rooms etc.. 

propertyid是主鍵自動遞增,圖像標識爲外鍵

images: imageId, image (image path with image name) 

imageId是主鍵自動遞增:在我的PHP

所以我有2向數據庫添加新屬性時的SQL語句(如果這不是這樣做的好方法,請糾正我)。

首先插入圖像值(「imagepath/imagename.jpg」)。

第二個查詢插入屬性值(城鎮,numOfrooms等)。

所以我插入的圖片到數據庫,然後我要插入屬性數據庫,我有錯誤檢查那裏後,我點擊添加屬性,

我得到消息「的形象已成功保存」到一個數據庫,但後來我得到錯誤說:

Cannot add or update a child row: a foreign key constraint fails : CONSTRAINT properties_ibfk_4 FOREIGN KEY (imageId) REFERENCES images (imageId))

這是正確的方式做到這一點,我第一次插入圖像,然後我插入屬性?

+0

你需要做兩件事情...插入圖片,在返回的自身ID數據庫。其次你插入屬性並設置圖像ID你現在擁有的。在交易中做這件事的好方法(如果你的數據庫引擎有這個) – daremachine

+0

謝謝我還沒有學習交易,但在stackoverflow中找到類似的問題,並且解決方案使用了php函數mysql_insert_id()這是你的意思嗎? – user3609461

+0

是的,你是對的..你插入後調用mysql_insert_id()..它返回新的ID插入圖像下一次你將此ID設置爲第二個插入,它應該沒事......如果事情在插入過程中失敗,總是一致的數據 – daremachine

回答

0

如果你試圖將屬性添加到您剛纔添加的圖像中,你需要使用更新同一行不能插入 在簡化的例子

UPDATE propertyName WHERE image = imageIJustInserted 

一旦你插入/創建的行就可以真的只是更新它。您不能再次插入。

+0

謝謝我看到你去哪裏與更新聲明,不知道這是否會幫助我在我的情況下 在我的屬性表中我有我插入的字段imageId(int),我不知道如何獲取圖像的圖像id只是插入 如果iam權利 – user3609461

+0

哦好吧我沒有正確讀取它,對不起。敢言機器在評論中是正確的 –

0

所以我得到它的工作 我不得不使用$ imageId = mysqli_insert_id($連接);
其中連接是我的實際數據庫連接 我得到的圖像標識剛插入的圖像,然後我可以用它第二insert語句裏面 感謝