Php Mysql 插入多个外键

标签 php mysql database

我正在尝试在表中有 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/

相关文章:

php - 使用php和mysqli显示和上传图像

php - 复杂的mysql表设计选择

mysql - 奇怪的(未知)MySql 行为

python - 如何制作脚本以在我的默认 sqlite3 数据库 django 中插入数据

mysql - 无法在 Go 中连接到远程 MySql

php - php中单个对象和多个对象类的接口(interface)或类型提示

php - 如果 html 属性 dir ="rtl",则将类添加到正文

php - 由于 "HTML Obfuscation",电子邮件变成垃圾邮件

mysql - 为什么查询不会因子查询中不存在的列而失败?

mysql - 根据当前时间修改 MySQL 列