2011-02-18 117 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

相关问题