2011-02-18 113 views
0

我似乎可以修復我有這個小錯誤。我有一個動態列表菜單,其中包含俱樂部分支機構的編號。 用戶可以在我的網站上添加一個事件,例如: event_id, event_name, event_venue, event_date, establishment_id ...等。該字段的establish_id可以爲null,默認值爲null。問題與「無法添加或更新子行:外鍵約束失敗」

上述establishment_id是表單位(establishment_id)的FK。

用戶可以選擇挑建立,如果他添加事件正在發生或有他可以離開它,如果空白就沒有連接到它的建立。

E.g.

Select 
    Crooked Q'z 
    The Haven 
    Brew Bistro 

我的代碼爲動態列表菜單

<label for="establishment_link"></label> 
<select name="establishment_link" id="establishment_link"> 
<option selected value="" <?php if (!(strcmp("", $row_establishment_list['establishment_id']))) {echo "selected=\"selected\"";} ?>>Select</option> 
<?php 
    do { 
    ?> 
    <option value="<?php echo $row_establishment_list['establishment_id']?>"<?php if (!(strcmp($row_establishment_list['establishment_id'], 
    $row_establishment_list['establishment_name']))) {echo "selected=\"selected\"";} ?>><?php echo $row_establishment_list['establishment_name']?></option> 
    <?php 
    } while ($row_establishment_list = mysql_fetch_assoc($establishment_list)); 
    $rows = mysql_num_rows($establishment_list); 
     if($rows > 0) { 
     mysql_data_seek($establishment_list, 0); 
     $row_establishment_list = mysql_fetch_assoc($establishment_list); 
     } 
     ?> 
</select> 

然而,當我將它留空我得到一個錯誤:

Cannot add or update a child row: a foreign key constraint fails (`nnl`.`event`, CONSTRAINT `event_ibfk_1` FOREIGN KEY (`establishment_id`) REFERENCES `establishment` (`establishment_id`)) 

insert語句:

.. 。

$establishment_link= $_POST['establishment_link']; 
$establishment_link= mysql_real_escape_string($establishment_link); 

...

$query2 = "INSERT INTO event(user_id, 
          event_name, 
          event_description, 
          event_photo_url, 
          event_thumb_url, 
          event_link_url, 
          event_venue, 
          event_telephone,  
          event_email,  
          establishment_id,        
          event_date, 
          event_time, 
          event_entrance_fee, 
          event_guest_appearances, 
          event_dress_code, 
          event_other_details) 
          VALUES 
          ('$user_id', 
          '$event_name', 
          '$event_description', 
          '$img_large', 
          '$img_thumb', 
          '$event_url', 
          '$event_venue', 
          '$event_telephone', 
          '$event_email', 
          '$establishment_link',       
          '$date', 
          '$time', 
          '$event_fee', 
          '$event_guests', 
          '$event_dress', 
          '$event_other')";       
//Execute query 
$qry_result2 = mysql_query($query2) or die(mysql_error()); 

我該如何解決這個問題?

回答

1

向我們展示實際的sql插入語句。但我的第一個猜測它應該是這樣的:

insert into events(...., establishment_id) values(...., ''); 

,而應該把NULL

insert into events(...., establishment_id) values(...., NULL); 

或不提establishment_id列名單上

insert into events(...) values(...); 

[後問題編輯]

它propobly是我說的。嘗試改變你對這個查詢:

$query2 = "INSERT INTO event(user_id, 
         event_name, 
         event_description, 
         event_photo_url, 
         event_thumb_url, 
         event_link_url, 
         event_venue, 
         event_telephone,  
         event_email,  
         establishment_id,        
         event_date, 
         event_time, 
         event_entrance_fee, 
         event_guest_appearances, 
         event_dress_code, 
         event_other_details) 
         VALUES 
         ('$user_id', 
         '$event_name', 
         '$event_description', 
         '$img_large', 
         '$img_thumb', 
         '$event_url', 
         '$event_venue', 
         '$event_telephone', 
         '$event_email', 
         ".(empty($establishment_link) ? "NULL" : "'$establishment_link'").",       
         '$date', 
         '$time', 
         '$event_fee', 
         '$event_guests', 
         '$event_dress', 
         '$event_other')"; 
+0

非常感謝。乾杯!問題解決了。 – 2011-02-18 09:08:55

相關問題