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')";
精彩评论