我试图在表格中有FK的情况下进行插入,但它不起作用..
我的数据库名称是 bd_telefonos
我的数据库看起来像这样:
表marcas :
idmarcas - > PK AI
NOMBRE
表 sistemas_operativos :
idsistemas_operativos - > PK AI
nombre
表 telefonos :
莫德洛
idtelefonos - > PK AI
resolucion_alto
resolucion_ancho
比索
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 ,我做错了什么?
请帮助:(答案 0 :(得分:1)
使用$ conn-&gt; 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();
答案 1 :(得分:0)
是否要更新telefonos表中的以下两列
marcas_idmarcas --> FK
sistemas_operativos_idsistemas_operativos -- > FK
您可以从两个表中获取最后一个插入值并在telefonos表中进行更新