2014-12-10 3 views
0

새 데이터를 사용할 수있을 때마다 MYSQL 데이터베이스의 이전 항목을 대체하려고하는데, 다음 PHP 코드가 있지만 매번 새 항목을 추가하는 것으로 보입니다. 도와주세요, 고마워요.MYSQL 데이터베이스의 항목을 새 항목으로 덮어 씁니다.

REPLACE를 사용해 보았지만 여전히 작동하지 않습니다. 누군가 내가 잘못하고 있다고 말할 수 있습니까?

<?php 

header('Content-Type: application/json'); 

$data = json_decode(file_get_contents('php://input'), true); 

$mysqli = new mysqli("localhost","dbuser","Pa55uu0Rd","iewdb"); 

if (mysqli_connect_errno()) 
{ 
    echo json_encode(array('error' => 'Failed to connect to MySQL: ' . mysqli_connect_error())); 
    return; 
} 

if(!$data) 
{ 
    echo json_encode(array('error' => 'Error input data')); 
    return; 
} 
    $usernme = $data['usernme']; 
    $longitude = $data['longitude']; 
    $latitude = $data['latitude']; 

$user = $mysqli->query("SELECT id FROM Users WHERE usernme = '$usernme' LIMIT 1"); 

$user_id = $user->fetch_object(); 

if(!$user_id) 
{  
    $mysqli->query("INSERT INTO Users (usernme) VALUES ('$usernme');"); 

    $user_id->id = $mysqli->insert_id; 
} 

if($longitude && $latitude) 
{ 
    $mysqli->query("REPLACE INTO Locations (User_id,Longitude, Latitude) VALUES ($user_id->id,$longitude,$latitude);"); 
} 

$mysqli->close(); 

echo json_encode(array('user_id' => $user_id->id)); 
+0

주이다 (매우) – Strawberry

+0

의미는'인'Locations' 테이블에 기본 키 또는 고유 인덱스 User_id'? 어쨌든'REPLACE' 대신에'UPDATE'를 사용하십시오. –

답변

1

사용 업데이트 쿼리 뭔가를 조회 대신 ... 단지 조회하는 것은 문제에 대한 내 솔루션이며 광주를 작동 아주 좋아. 내가 그것이 가장 고마웠다라고 생각했던 것에 따라 당신이 아래에서 볼 수있는 것에 따라 나는 갱신과 함께 가기로 결정했다, 도움에 감사드립니다. BY ORDER없이 LIMIT

<?php 

header('Content-Type: application/json'); 

//get parameters 
$data = json_decode(file_get_contents('php://input'), true); 

// Create connection 
$mysqli = new mysqli("localhost","dbuser","Pa55w0rd","ewdb"); 

// Check connection 
if (mysqli_connect_errno()) 
{ 
    echo json_encode(array('error' => 'Failed to connect to MySQL: ' . mysqli_connect_error())); 
    return; 
} 

if(!$data) 
{ 
    echo json_encode(array('error' => 'Error input data')); 
    return; 
} 

    $usernme = $data['usernme']; 
    $longitude = $data['longitude']; 
    $latitude = $data['latitude']; 

$user = $mysqli->query("SELECT id FROM Users WHERE usernme = '$usernme' LIMIT 1"); 

$user_id = $user->fetch_object(); 
if(!$user_id) 
{  
    $mysqli->query("INSERT INTO Users (usernme) VALUES ('$usernme');"); 

    $user_id->id = $mysqli->insert_id; 

    $mysqli->query("INSERT INTO Locations (User_id) VALUES ($user_id->id);"); 

} 

if($longitude && $latitude) 
{ 
    $mysqli->query("UPDATE Locations SET Longitude = $longitude, Latitude = $latitude WHERE User_id = $user_id->id;"); 

} 

/* close connection */ 
$mysqli->close(); 

echo json_encode(array('user_id' => $user_id->id)); 
+0

도움을 주셔서 감사합니다. 업데이트가 완료되었으며 정상적으로 작동합니다. 아래에 솔루션을 구현했습니다. –

1

논리 대신 .. 오래된 항목이 해당 된 항목을 삭제하고 나중에 성능의 경우는 항상 좋은 데이터베이스에 새로운 항목을 추가 할 수 있도록

을 대체하는 하나의 삭제 및 삽입 작성해야 (3) 다음은이

UPDATE MyTable 
SET User_id = 'USER_ID_VALUE', Longitude='LONGITUDE_VALUE', Latitude='LATITUDE_VALUE' 
WHERE SomeOtherColumn LIKE '%PATTERN%' 
+0

흥미 롭군요, 알았어요. –

+0

예 .. 항상 로직이 실패하지 않고도 완벽하게 작동합니다 .. –

+0

@fa_devlpr는 작동합니까? –

1

같은

관련 문제