2013-07-04 103 views
0

我需要知道,如果我可以查詢和檢查數據庫表數據之前,php scrip將INSERT INTO表中?檢查mysql數據表插入到

我已經做了一個2字段的HTML和提交按鈕(POST),我也沒有添加數據到數據庫表的問題,並得到它的結果,但我有重複,我不想擁有它。 ..我想腳本來檢查我的數據,輸入的數據,如果沒有重複,然後添加它。

請協助。

謝謝

你的代碼

<?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

你可以用'triggers'。 – kevinm

+0

@kevinm:觸發器可能是矯枉過正的。也許他可以做簡單的選擇,如果它返回的東西跳過插入。 – mnagel

+0

@Narius ...你是否想檢查特定列或所有列中的重複值? – kevinm

回答

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

這樣做的工作@Narius? – kevinm

+0

我真的需要知道這個腳本的每一步才能理解。我只是不想複製。 WHERE NOT EXIST(SELECT 1 [這是什麼?] FROM T1 AS T2 [and this?] 如果你給我一些鏈接來描述這個說法 – Narius

+0

@ Narius-我改變了我的答案... – kevinm

0

如果你不想處理格蘭情況時有重複的只使用INSERT INTO忽略,而不是INSERT INTO。它可以像INSERT一樣工作,但如果有重複則不會失敗。

+0

會不會失敗?我需要它在發現重複時被丟棄 – Narius

0

如果你想消除在1個行程重複的記錄,你可以使用REPLACE可用的命令在MySQL(參考:http://dev.mysql.com/doc/refman/5.0/en/replace.html)。如果具有相同值的行已經存在,那麼它將刪除現有行並添加新的其他行,它將插入新記錄。

你甚至可以尋找其他選項Insert into a MySQL table or update if exists

+0

這很有趣,讓我試試。 – Narius

+0

不,重複仍然存在 – Narius

+0

您的表中是否有主鍵或唯一索引?替換功能在文檔中列出的主鍵上工作。您也可以嘗試插入重複(http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html) –