我正在尝试在表中有 FK 的地方进行插入,但它不起作用..
我的数据库名称是bd_telefonos
我的数据库看起来像这样:
表格标记:
idmarcas --> PK AI
nombre
表sistemas_operativos:
idsistemas_operativos -->PK AI
nombre
表电话:
modelo
idtelefonos --> PK AI
resolucion_alto
resolucion_ancho
peso
bateria
marcas_idmarcas --> FK
sistemas_operativos_idsistemas_operativos -- > FK
我的 php 看起来像这样:
<?php
include_once('conexion/conexion.php');
$con = new conectar();
$modelo= $_POST['modelo'];
$alto= $_POST['alto'];
$ancho= $_POST['ancho'];
$peso= $_POST['peso'];
$bateria= $_POST['bateria'];
$nombresis = $_POST['nombresis'];
$nombremarca = $_POST['nombremarca'];
$sSql = "INSERT INTO `bd_telefonos`.`telefonos` (`modelo`, `resolucion_alto`, `resolucion_ancho`, `peso`, `bateria`) VALUES ('$modelo', '$alto', '$ancho', '$peso', '$bateria')";
if(!mysqli_query($con->conectarse(), $sSql)){
$resp = 'error ';
}
else{
/*=============================================================================
= select recently insert =
=============================================================================*/
$sSqlId = "SELECT MAX(id) as `id` FROM `bd_telefonos`.`telefonos`";
if($respuesta = mysqli_query($con->conectarse(), $sSqlId)){
foreach ($respuesta as $resp) {
$id = $resp['id'];
}
}
/*========================================================
= Insert sistemas_operativos
========================================================*/
$sSqlMas = "INSERT INTO `bd_telefonos`.`sistemas_operativos` (`idsistemas_operativos`, `nombre`) VALUES ('$id', '$nombresis')";
if (mysqli_query($con->conectarse(), $sSqlMas)) {
$resp = 'success';
echo $resp;
} else {
$resp = 'error';
echo $resp;
}
/*========================================================
= Insert marcas
========================================================*/
$sSqlMass = "INSERT INTO `bd_telefonos`.`marcas` (`idmarcas`, `nombre`) VALUES ('$id', '$nombremarca')";
if (mysqli_query($con->conectarse(), $sSqlMass)) {
$resp = 'success';
$resp = 'error';
echo $resp;
}
}
mysqli_close($con->conectarse());
?>
它不起作用,它只是没有在我的表中插入telefonos,我做错了什么?
请帮忙:(
最佳答案
使用 $conn->insert_id 而不是 MAX(ID)。
$conn = new mysqli("hostname", "db_user_name", "db_password", "db_name");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$modelo= $_POST['modelo'];
$alto= $_POST['alto'];
$ancho= $_POST['ancho'];
$peso= $_POST['peso'];
$bateria= $_POST['bateria'];
$nombresis = $_POST['nombresis'];
$nombremarca = $_POST['nombremarca'];
$sSql = "INSERT INTO `telefonos` (`modelo`, `resolucion_alto`, `resolucion_ancho`, `peso`, `bateria`) VALUES ('$modelo', '$alto', '$ancho', '$peso', '$bateria')";
if ($conn->query($sSql) === TRUE) {
$id = $conn->insert_id;
/*========================================================
= Insert sistemas_operativos
========================================================*/
$sSqlMas = "INSERT INTO `sistemas_operativos` (`idsistemas_operativos`, `nombre`) VALUES ('$id', '$nombresis')";
if ($conn->query($sSqlMas) === TRUE) {
echo 'success';
$sistemas_operativos_id = $conn->insert_id;
} else {
echo "Error: " . $sSqlMas . "<br>" . $conn->error;
}
/*========================================================
= Insert marcas
========================================================*/
$sSqlMass = "INSERT INTO `marcas` (`idmarcas`, `nombre`) VALUES ('$id', '$nombremarca')";
if ($conn->query($sSqlMass) === TRUE) {
echo 'success';
$marcas_id = $conn->insert_id;
} else {
echo "Error: " . $sSqlMass . "<br>" . $conn->error;
}
/************** Update FK ***************/
$update_sql = "UPDATE telefonos SET marcas_idmarcas ='$marcas_id', sistemas_operativos_idsistemas_operativos ='$sistemas_operativos_id' WHERE idtelefonos = '$id'";
if ($conn->query($update_sql) === TRUE) {
echo 'Successfully Update';
} else {
echo "Error: " . $update_sql. "<br>" . $conn->error;
}
} else {
echo "Error: " . $sSql . "<br>" . $conn->error;
}
$conn->close();
关于Php Mysql 插入多个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43960121/