开发者

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. A user can add an event on my site with info such as : event_id, event_name, event_venue, event_date, establishment_id...etc. The field establishment_id can be null and default is null.

The above establishment_id is a FK of the table establishments(establishment_id).

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.

E.g.

    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);
        }
        ?>开发者_JS百科
</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. But my first guess it would look like this:

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

while it should put NULL

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

or not mention establishment_id on the column list

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜