2013-07-04 2 views
0

J'ai besoin de savoir si je peux interroger et vérifier les données de la table de base de données avant que le script php INSÉRER DANS cette table?vérifier les données de la table mysql befor insérer dans

J'ai fait un html avec 2 champs et soumettre le bouton (POST), et je n'ai aucun problème avec ajouter des données à la table de base de données et obtenir son résultat, mais j'ai des doublons et je ne veux pas. .. Je veux script pour vérifier mes données, les données d'entrée et s'il n'y a pas de doublon, puis l'ajouter.

Veuillez nous aider.

Merci

code

<?php 


$con=mysqli_connect("localhost","root","Opera1","railway"); 


if(mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: ", mysqli_connect_error; 
} 

$data1 = $_POST['data1']; 
$data2 = $_POST['data2']; 



$sql="replace into pipe (data1, data2) 
values ('$data1','$data2')"; 



if(!mysqli_query($con,$sql)) 
{ 
die('Error : ' . mysqli_error($con)); 
} 


echo "Record to Registraton added"; 

$result = mysqli_query($con,"SELECT * FROM pipe"); 

echo "<table border='1'> 
<tr> 
<th>Data1</th> 
<th>Data2</th> 
</tr>"; 

while($row = mysqli_fetch_array($result)) 
    { 
echo "<tr>"; 
    echo "<td>" . $row['data1'] . "</td>"; 
    echo "<td>" . $row['data2'] . "</td>"; 
    echo "</tr>"; 
    } 
echo "</table><br><br>"; 


mysqli_close($con); 


?> 
+0

Vous pouvez utiliser 'triggers'. – kevinm

+0

@kevinm: Les déclencheurs sont probablement trop puissants ici. Probablement, il peut simplement faire une sélection simple, et si elle retourne quelque chose, sautez l'insertion. – mnagel

+0

@Narius ... vous voulez vérifier les valeurs en double dans une colonne particulière ou toutes les colonnes? – kevinm

Répondre

1
 <?php 


    $con=mysqli_connect("localhost","root","Opera1","railway"); 


    if(mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: ", mysqli_connect_error; 
    } 

    $data1 = $_POST['data1']; 
    $data2 = $_POST['data2']; 

    $sql1="select * from pipe"; 
    $q1=mysql_query($con, $sql1); 
    $t=0; 
    while($row1=mysql_fetch_array($q1)) 
    { 

    if($row1['data1']== '$data1' || $row1['data2']=='$data2') 
    { 
    $t=1; 
    break; 
    } 
    } 
    if($t==1) 
    { 
     echo "Duplicate Entry!"; 
    } 
    else 
    { 

    $sql="replace into pipe (data1, data2) 
    values ('$data1','$data2')"; 



    if(!mysqli_query($con,$sql)) 
    { 
    die('Error : ' . mysqli_error($con)); 
    } 


    echo "Record to Registraton added"; 

    $result = mysqli_query($con,"SELECT * FROM pipe"); 

    echo "<table border='1'> 
    <tr> 
    <th>Data1</th> 
    <th>Data2</th> 
    </tr>"; 

    while($row = mysqli_fetch_array($result)) 
     { 
    echo "<tr>"; 
     echo "<td>" . $row['data1'] . "</td>"; 
     echo "<td>" . $row['data2'] . "</td>"; 
     echo "</tr>"; 
     } 
    echo "</table><br><br>"; 

    } 

    mysqli_close($con); 


    ?> 
+0

cela fonctionne @Narius? – kevinm

+0

J'ai vraiment besoin de connaître chaque étape de ce script pour comprendre. Je ne veux pas copier. OÙ EXISTE PAS (SELECT 1 [qu'est-ce?] DE T1 AS T2 [et cela?] Si vous s'il vous plaît me donner un lien qui décrira cette déclaration. – Narius

+0

@ Narius- j'ai changé ma réponse ... – kevinm

0

Si vous ne voulez pas gérer Teh cas où il est un doublon il suffit d'utiliser IGNORE INSERT INTO au lieu de INSERT INTO. Cela fonctionnerait exactement comme INSERT mais n'échouerait pas s'il y a des doublons.

+0

ne manquerait pas? J'ai besoin qu'il soit abandonné quand il trouve le double – Narius

0

Si vous voulez éliminer les enregistrements en double en 1 temps, vous pouvez utiliser la commande REPLACE disponible dans mysql (ref: http://dev.mysql.com/doc/refman/5.0/en/replace.html). Si une ligne avec la même valeur existe déjà, elle supprimera la ligne existante et ajoutera de nouvelles sinon elle insérera le nouvel enregistrement.

Vous pouvez même rechercher d'autres options à Insert into a MySQL table or update if exists

+0

Ceci est intéressant, laissez-moi essayer. – Narius

+0

non, les doublons restent – Narius

+0

avez-vous une clé primaire ou un index unique dans votre table. La fonctionnalité de remplacement fonctionne sur la clé primaire telle que répertoriée dans le document. Aussi, vous pouvez essayer d'insérer en double (http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html) –

Questions connexes