У меня есть страница PHP, которая заполняет две разные таблицы моей базы данных.Проблема с внешним ключом при добавлении данных в базу данных базы данных
После того, как я добавлю новый столбец, а затем создаю внешний ключ, данные больше не могут быть вставлены в эту таблицу. Если я удалю внешний ключ, тогда он снова будет работать ... Кто-нибудь испытал что-то подобное раньше?
Это, как я заполнить обе таблицы из одной и той же странице:
include("../includes/connection.php");
$name = mysqli_real_escape_string($link, $_POST['name']);
$email = mysqli_real_escape_string($link, $_POST['email']);
$number = mysqli_real_escape_string($link, $_POST['number']);
$device = mysqli_real_escape_string($link, $_POST['device']);
$price = mysqli_real_escape_string($link, $_POST['price']);
$payment = mysqli_real_escape_string($link, $_POST['payment']);
$status = mysqli_real_escape_string($link, $_POST['status']);
$model = mysqli_real_escape_string($link, $_POST['model']);
$problem = mysqli_real_escape_string($link, $_POST['problem']);
// attempt insert query execution
$sql = "INSERT INTO customer (name, mail, number, device, price, paymenttype,status,date) VALUES ('$name', '$email', '$number', '$device', '$price', '$payment','$status',NOW())";
if(mysqli_query($link, $sql)){
// echo "Records added successfully.";
header("location:add-customer.php?message=The customer has been added to the database1");
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
$sql = "INSERT INTO job (device, model, problem, status) VALUES ('$device', '$model', '$problem', '$status')";
if(mysqli_query($link, $sql)){
// echo "Records added successfully.";
header("location:add-customer.php?message=The customer has been added to the database2");
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
} mysqli_close($link);?>
И это картина может лучше объяснить, что я хочу добиться:
- один в фоном является JOB_Table.
- В каждой строке JOB_Table есть кнопка «информация», чем в onclick должны отображать данные, собранные с CUSTOMER_table.
Пример:
кнопка «Информация» в первом ряду, хочет получить первую строку таблицы клиентов ..
кнопки «информации» во втором ряду, хочет получить вторую строку таблицы клиентов ...
--------- модального всплывающий код, который собирает таблицы клиентов после щелчка -----
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Customer Information</h4>
</div>
<div class="modal-body">
<?php
include("../includes/connection.php");
if ($link->connect_errno > 0) {
die('Unable to connect to database [' . $link->connect_error . ']');
}
$sql = "SELECT id,name,mail,number,price,paymenttype,faktura,date from customer WHERE id = '[job_id]' ";
if (!$result = $link->query($sql)) {
die('There was an error running the query [' . $link->error . ']');
}
echo "
<table class='table'>
<thead>
<tr>";
/* Get field information for all columns */
while ($finfo = $result->fetch_field()) {
echo "
<th>" . $finfo->name . "</th>";
}
echo "
</tr>
</thead>
<tbody>";
while ($row = $result->fetch_assoc()) {
echo "<tr class='info'>
<td>" . $row['id'] . "</td>
<td>" . $row['name'] . "</td>
<td>" . $row['mail'] . "</td>
<td>" . $row['number'] . "</td>
<td>" . $row['price'] . "</td>
<td>" . $row['paymenttype'] . "</td>
<td>" . $row['faktura'] . "</td>
<td>" . $row['date'] . "</td>
</tr>";
}
echo "
</tbody>
</table>";
?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
--------- и с этим кодом, я собираю стол работа ----
<?php
include("../includes/connection.php");
if ($link->connect_errno > 0) {
die('Unable to connect to database [' . $link->connect_error . ']');
}
if (isset($_POST['update'])) {
$results = $link->query("UPDATE job SET status='$_POST[status]', priority='$_POST[priority]' WHERE id='$_POST[hidden]'");
$results = $link->query("UPDATE customer SET status='$_POST[status]' WHERE id='$_POST[hidden]'");
}
$sql = "SELECT * from job";
if (!$result = $link->query($sql)) {
die('There was an error running the query [' . $link->error . ']');
}
echo "
<table class='table'>
<thead>
<tr>";
/* Get field information for all columns */
while ($finfo = $result->fetch_field()) {
echo "
<th>" . $finfo->name . "</th>";
}
echo "
</tr>
</thead>
<tbody>";
while ($row = $result->fetch_assoc()) {
$job_id = $row['id'];
echo "<form action='' method=post>";
echo "<tr class='info'>
<input type=hidden name=hidden value=" . $row['id'] . ">
<td>" . $row['id'] . "</td>
<td>" . $row['device'] . "</td>
<td>" . $row['model'] . "</td>
<td>" . $row['problem'] . "</td>
<td>
<select class='form-control col-sm-10' id='status' name='status'>
<option value='new' ". ($row['status'] == 'new'? 'selected ': '') .">New</option>
<option value='progress' ". ($row['status'] == 'progress'? 'selected ': '') .">Progress</option>
<option value='wait' ". ($row['status'] == 'wait'? 'selected ': '') .">Wait</option>
<option value='done' ". ($row['status'] == 'done'? 'selected ': '') .">Done</option>
<option value='close' ". ($row['status'] == 'close'? 'selected ': '') .">Close</option>
</select>
</td>
<td><select class='form-control col-sm-10' id='priority' name='priority'>
<option style='background-color:green;'value='low' ". ($row['priority'] == 'Low'? 'selected ': '') .">Low</option>
<option style='background-color:yellow; value='Medium' ". ($row['priority'] == 'Medium'? 'selected ': '') .">Medium</option>
<option style='background-color:red; value='High' ". ($row['priority'] == 'High'? 'selected ': '') .">High</option>
</select></td>
<td> <button type='submit' class='btn btn-primary btn-sm' name='update'>Update</button></td>
<td> <a class='btn btn-primary btn-sm' data-toggle='modal' data-target='#myModal' name='job_id' value='[$job_id]' > Info</a></td>
</tr>";
echo "</form>";
}
echo "
</tbody>
</table>";
?>
Мы должны увидеть таблицы. Также вы вставляете в правильном порядке? Если вы попытаетесь вставить в таблицу fk перед pk, тогда возникнут проблемы. Вы используете innoDB? – bassxzero
ubuntu ?? или окна? –
@bassxzero Я обновил свой вопрос – gigi