2016-07-03 1 views
0

안녕하세요 여러분, 제가 PHP로 매우 새롭기 때문에 여러분의 도움이 필요합니다. 나는 다른 사람들에 의해 이전에 게시되었던 비슷한 질문을 보았으나 그것은 나에게 도움이되지 않아 새로운 질문을 만들어 냈다. php - mysql 데이터베이스에 중복 데이터가 삽입되는 것을 방지합니다.

<?php 
    $servername = "localhost"; 
    $name = "root"; 
    $password = "root"; 
    $dbname = "my computer"; 

    // Create connection 
    $conn = mysqli_connect($servername, $name, $password, $dbname); 
    // Check connection 
    if (!$conn) { 
     die("Connection failed: " . mysqli_connect_error()); 
    } 



    $query = "SELECT * FROM `booked` WHERE 

    `name` = '{$username}' 
    `date` = '{$date}' 
    `computer_id` = '{$select3}' 
    `start_time` = '{$select1}' 
    `end_time` = '{$select2}' 
    `room` = '{$room}' 

    "; 

    $result = mysqli_query($conn, $query); 



    if (mysqli_num_rows ($result) > 1) 
    { 

    echo "data already exists"; 

    } 




    else 
    { 
    $sql = "INSERT INTO booked (date, computer_id, name, start_time, end_time, room) 
     VALUES ('$date', '$select3', '$username', '$select1', '$select2', '$room')"; 



    if (mysqli_query($conn, $sql)) { 
     echo "New record created successfully"; 
     } else { 
     echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
     } 

    mysqli_close($conn); 

    } 
    ?> 

여기에 "예약"테이블 내부의 특정 테이블 행에 변수 값을 저장 내 코드입니다.

동일한 값이 이미 데이터베이스에 존재하면 mysql이 데이터베이스 테이블 "booked"에 값 삽입을 거부하도록하고 싶습니다. 참고 : 모든 값은 동일해야합니다. 하나의 값을 제외하고 모든 값이 동일하면 시스템은 여전히 ​​삽입을 허용해야합니다. 중복 값이 ​​에코한다 발견 될 경우 ". 데이터를 삽입 발견 값을 복제 할 수 없습니다"사전

답변

1

이 두 가지 일을해야에

고맙다.

ALTER TABLE `tableName` ADD UNIQUE `unique_index`(`columnName1` ,`columnName2`); 

OR (MySQL 버젼 5.5.32)

ALTER TABLE `tableName` ADD UNIQUE (`columnName1` ,`columnName2`); 

OR

중복 값은. "데이터를 삽입 할 수있는 발견 된 값 중복"에코

을한다 발견되면 먼저 데이터가 이미 존재하는지 확인한 다음 그 데이터를 INSERT 쿼리와 함께 계속할 수 있습니다. 추신. 하위 쿼리를 사용하여이 작업을 수행 할 수도 있습니다.

한 가지 방법 :

$query = "SELECT * FROM `tableName` WHERE `columnName1` = '{$val1}'"; 

$result = mysqli_query($conn, $query); 

if (mysqli_num_rows ($result) > 1) 
{ 
//data already exists 
} 
else 
{ 
//do your INSERT query here 
} 
+0

안녕하세요, 마지막 코드를 지우 셨지만 작동하지 않았습니까? 위 코드를 올바르게 업데이트했는지 확인할 수 있습니까? –

+0

'작동하지 않았습니다.'라는 메시지가 나타났습니다. ? 쿼리를'에코 (echo) '하고 실제로 가져 오거나 보내지는 것을 확인하십시오. – user5173426

-1

더 진보 된 시스템은 PDO해야한다.

이동해보십시오. 사용 방법은 PDO를 사용하는 방법을 참조하십시오.

관련 문제