내가 같이 기본적으로 보이는 사이트 개발 오전 :삽입 여러 쿼리 (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
당신이 당신의 $의 SQL을 통해 2 시간 – Drew
당신이 당신의 쿼리를 덮어 쓰는 것을 짓밟고있다을 사용하여 두 쿼리를 실행합니다. '$ sql = "foo"; $ sql = "bar"'는 $ sql을'bar'로 남겨 둡니다. 따라서 여러 개의 쿼리를 보내지 않고 마지막으로 정의한 하나의 쿼리를 보냅니다. 어쨌든 [SQL 주입 공격] (http://bobby-tables.com)에 취약하므로 앉아서 휴식을 취하십시오. 서버가 곧 pwn3d가되고 문제가 해결됩니다. –
'x === false'와 같은 일을하지 마십시오. 대신'! x'를 테스트하십시오. – tadman