2016-10-13 2 views
-2

내가 같이 기본적으로 보이는 사이트 개발 오전 :삽입 여러 쿼리 (mysqli 및 PHP는)

<div> <form action="insert" method="POST"> <div> .....bla bla bla.... </div> </form> </div>

을 "blablabla"내부를 내가 2 개 <div> 태그를 가지고있다 : 하나는 클라이언트이며, 다른 하나는 <input> 태그가 여러 개 들어있는 차량 (자동차 수리점에 있습니다)에 한 개만 (차량)의 두 개가 <div> 데이터를 삽입하고 있습니다.

아마도 mysqli_multi_query가 잘못 사용되고 있습니다. 이 내 PHP 코드 :

<?php 
//error_reporting(0); 

//conexion a la base de datos 
$link = mysqli_connect("localhost","root","","delher"); 
if ($link===false){ 
    die("ERROR: NO SE PUDO CONECTAR.".mysqli_connect_error()); 
} 


//declaracion de variables 
$null = NULL; 
$nombre = ($_POST['nombre']); 
$calle_num = ($_POST['calle_num']); 
$colonia = ($_POST['colonia']); 
$codigopostal = ($_POST['codigopostal']); 
$ciudad = ($_POST['ciudad']); 
$estado = ($_POST['estado']); 
$pais = ($_POST['pais']); 
$telefono_fijo = ($_POST['telefono_fijo']); 
$telefono_movil = ($_POST['telefono_movil']); 
$email = ($_POST['email']); 
$curp = ($_POST['curp']); 
$vin = ($_POST['vin']); 
$marca = ($_POST['marca']); 
$modelo = ($_POST['modelo']); 
$linea = ($_POST['linea']); 
$motor = ($_POST['motor']); 
$color = ($_POST['color']); 
$placas = ($_POST['placas']); 

//multiquery mysqli... 

//inserta campos del cliente en la tabla clientes 
$sql = "INSERT INTO cliente (nombre, calle_num, colonia, codigopostal, ciudad, estado, pais, telefono_fijo, telefono_movil, email, curp) VALUES ('$nombre','$calle_num','$colonia','$codigopostal','$ciudad','$estado','$pais','$telefono_fijo','$telefono_movil','$email','$curp');"; 

//inserta los campos del vehiculo en la tabla vehiculo 
$sql = "INSERT INTO vehiculo (vin, marca, modelo, linea, motor, color, placas) VALUES ('$vin','$marca','$modelo','$linea','$motor','$color','$placas')"; 





// 
if(mysqli_multi_query($link,$sql)){ 
    echo "Orden registrada correctamente! 
    En 3 segundos se redirigira a la pagina anterior."; 
    header("refresh:3; url=index.php"); 
} 
else{ 
    echo "ERROR: No se pudo ejecutar $sql." .mysql_error($link); 
} 




//cierra conexion 
mysqli_close($link); 
?> 

가 이미 같은 ... 쿼리 사이에 세미콜론을 넣어 시도했다, 그것은 단지 만이 나의 디자인은 "vehiculo"테이블

을 채 웁니다 : enter image description here

+1

당신이 당신의 $의 SQL을 통해 2 시간 – Drew

+1

당신이 당신의 쿼리를 덮어 쓰는 것을 짓밟고있다을 사용하여 두 쿼리를 실행합니다. '$ sql = "foo"; $ sql = "bar"'는 $ sql을'bar'로 남겨 둡니다. 따라서 여러 개의 쿼리를 보내지 않고 마지막으로 정의한 하나의 쿼리를 보냅니다. 어쨌든 [SQL 주입 공격] (http://bobby-tables.com)에 취약하므로 앉아서 휴식을 취하십시오. 서버가 곧 pwn3d가되고 문제가 해결됩니다. –

+0

'x === false'와 같은 일을하지 마십시오. 대신'! x'를 테스트하십시오. – tadman

답변

0

여기에 mysqli_multi_query가 필요하지 않습니다.

대신, 별도 준비된 문

+1

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - [리뷰에서] (리뷰/저품절 포스트/13977072) –

+0

같은 질문에 직면 한 모든 사람이 얻을 수있는 최선의 답변이기 때문에이 답변을 다시 게시 해 드리겠습니다. –

+0

이 답변에 잘못된 것이 없습니다. +1 – Drew