简体   繁体   English

“无法添加或更新子行:外键约束失败”的问题

[英]Problem with “Cannot add or update a child row: a foreign key constraint fails”

I can seem to fix this little bug I have. 我似乎可以修复这个小错误。 I have a dynamic list menu that carries establishment ID's of club establishments. 我有一个动态列表菜单,其中包含俱乐部场所的场所ID。 A user can add an event on my site with info such as : event_id, event_name, event_venue, event_date, establishment_id ...etc. 用户可以在我的网站上添加一个事件,其中包含以下信息: event_id, event_name, event_venue, event_date, establishment_id ...等。 The field establishment_id can be null and default is null. 字段Establishment_id可以为null,默认值为null。

The above establishment_id is a FK of the table establishments(establishment_id). 上面的Establishment_id是表的Establishments(Establishmentment_id)的FK。

A user can either choose to pick an establishment if the event he is adding is happening there or he can leave it blank if there is no establishment connected to it. 如果要添加的事件正在那里,则用户可以选择选择一个场所,或者如果没有与之连接的场所,则可以将其留空。

Eg 例如

    Select
    Crooked Q'z
    The Haven
    Brew Bistro 

My Code for the dynamic list menu 动态列表菜单的“我的代码”

<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>

However, when I leave it blank i get an error: 但是,当我将其留空时,我得到一个错误:

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`))

The insert statement: 插入语句:

... ...

$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());

How do I fix this? 我该如何解决?

Show us actual sql insert statement. 向我们展示实际的sql插入语句。 But my first guess it would look like this: 但是我的第一个猜测是:

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

while it should put NULL 虽然应该放NULL

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

or not mention establishment_id on the column list 或在列列表中不提及Establishment_id

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

[After question edit] [问题编辑后]

It propobly is what i said. 我说的很恰当。 Try changing yout query to this: 尝试将您的查询更改为此:

$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')";   

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM