在mysql中双重插入

时间:2015-04-09 09:18:05

标签: php jquery mysql ajax

好吧,我在html上有一个表单,它对php函数进行ajax调用,将表单中的值插入到我的数据库中。所以,没有问题,直到我得到双行插入,我得到正确的行,另一个空行。

我的js代码

'use strict';

$.validator.addMethod("lettersonly", function(value, element) {
    return this.optional(element) || /^[a-z\s\ñ\Ñ]+$/i.test(value);
}, "Solo letras por favor");

$("#enviarEditar").click(function(){


var fiscales;
var fiscales2;
var personaContacto;
var email;
var pass;

 //VALIDACION DEL FORMULARIO EDITAR
           $('#formu').validate({

                        rules: {


                        fiscales:{
                                required:true
                        },
                        fiscales2:{
                            required:false
                        },
                       personaContacto:{
                            required: true
                        },
                        email:{
                            required:true,
                            minlength:4,
                            email:true,
                        },
                        pass:{
                          required:true,
                          minlength:5
                        },
                          },
                        messages: {
                              email: {
                                      remote: "Este correo ya esta en uso."
                                      }
                            },
        submitHandler: function() {







          fiscales = $('#fiscales').val();
           fiscales2 = $('#fiscales2').val();
           personaContacto = $('#personaContacto').val();
           email = $('#email').val();
           pass = $("#pass").val();



           $.ajax({
               type: 'POST',
               dataType: 'json',
               url: 'php/registro_admin.php',

               data: {
                   fiscales: fiscales,
                   fiscales2: fiscales2,
                   personaContacto:personaContacto,
                   email: email,
                   pass:pass


               },
               error: function(xhr, status, error) {


                    $.growl({

                  icon: "glyphicon glyphicon-ok",
                  message: "Administrador registrado correctamente!"

                },{
                  type: "success"
                });

               },
               success: function(data) {
                  var $mitabla =  $("#miTabla").dataTable( { bRetrieve : true } );
                  $mitabla.fnDraw();




                 if(data[0].estado==0){

                 $.growl({

                  icon: "glyphicon glyphicon-ok",
                  message: "Administrador registrado correctamente"

                },{
                  type: "success"
                });
               }else{

                 $.growl({

                  icon: "glyphicon glyphicon-ok",
                  message: "Administrador registrado correctamente!"

                },{
                  type: "success"
                });
               }

               },
               complete: {


               }
           });




        }

   });
  //FIN VALIDACION FORMULARIO EDITAR



});
//FIN CLICK

我的php文件:

<?php
header('Access-Control-Allow-Origin: *');
/* Database connection information */
include("mysql.php" );

function fatal_error($sErrorMessage = '') {
    header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error');
    die($sErrorMessage);
}
/*
 * MySQL connection
 */
if (!$gaSql['link'] = mysql_pconnect($gaSql['server'], $gaSql['user'], $gaSql['password'])) {
    fatal_error('Could not open connection to server');
}
if (!mysql_select_db($gaSql['db'], $gaSql['link'])) {
    fatal_error('Could not select database ');
}
mysql_query('SET names utf8');
/*
 * SQL queries
 * Get data to display
 */

$fiscales = $_GET["fiscales"];
$fiscales2 = $_GET["fiscales2"];
$personaContacto = $_GET["personaContacto"];
$email = $_GET["email"];
$pass = $_GET["pass"];




$query1= " INSERT INTO admin (datos_fiscales, datos_fiscales2, persona_contacto, email) VALUES ('".$fiscales."','".$fiscales2."','".$personaContacto."','".$email."')"; 
 log($query1);
echo $query1;


$query_res1 = mysql_query($query1);
if($query_res1){

$sql = "SELECT id_admin
        FROM admin
        where persona_contacto='".$personaContacto."'";

$res = mysql_query($sql);
while($row = mysql_fetch_array($res, MYSQL_ASSOC))
{
$id_nuevo=$row['id_admin'];
}
}
//echo "idenuevo =>  $id_nuevo";
for ($i=0;$i<count($personaContacto);$i++)    
{     
//echo "<br> CLinicaid " . $i . ": " . $clinicas[$i];   
$query2 = "insert into usuario (nombre_usuario,password,tipo,cl_cliente,cl_editor,cl_medio,cl_admin) values( 
             '". $personaContacto . "', 
            '" . $pass . "',
            'admin',null,null,null,
            ".$id_nuevo.")" ;
//echo"$query1";
            $query_res2 = mysql_query($query2);
            echo $query2;
} 


if (!$query_res1||!$res||!$query_res2) {
   // $mensaje  = 'Error en la consulta de inserts: ' . mysql_error() . "\n";
   // $estado = mysql_errno();
    if (mysql_errno() == 1062) {
        $mensaje = "Imposible añadir el admin, id admin ya existe";
        $estado = mysql_errno();
    } else {
        $mensaje = 'Error en la consulta: ' . mysql_error() ;
        $estado = mysql_errno();
    }
}
else
{
    $mensaje = "Insercion correcta";
    $estado = 0;
}
$resultado = array();
 $resultado[] = array(
      'mensaje' => $mensaje,
      'estado' => $estado
   );
echo json_encode($resultado);
?>

我只有第一个插入的问题,因为在表中的第二个插入中,一切都很顺利。

非常感谢

此致

2 个答案:

答案 0 :(得分:1)

您没有阻止默认表单提交处理程序。它首先触发ajax提交,然后表单将提交,因为它是默认行为。

$("#enviarEditar").click(function(e) {
    e.preventDefault();

    // DO YOUR AJAX AND OTHER STUFF BELOWWW

});

答案 1 :(得分:0)

好的,我找到了答案,它不是好的,但它确实有效。 我必须在执行插入后删除id为空的删除操作。

感谢大家帮助我