Php Mysql插入多个外键

时间:2017-05-14 03:33:21

标签: php mysql database

我试图在表格中有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 ,我做错了什么?

请帮助:(

2 个答案:

答案 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表中进行更新