2014-05-13 2 views
0

데이터베이스의 기존 행을 업데이트하는 데 문제가 있습니다. 내가해야 할 일은 "Time_Out"이라는 필드에 레코드를 추가하는 것입니다. 이 필드는 "Time_In", "username"및 "date_added"와 같은 행에 있습니다. Time_In은 완벽하게 작동합니다. , 나는 "INSERT INTO ..."줄을 제거하고로 변경 한 TIME_OUT를 들어MySQL 데이터베이스의 데이터 업데이트

date_default_timezone_set('Asia/Taipei'); 
$date_added = date ("Y-m-d"); 
$time_added = date ("h:i:s:a:"); 
$user = $_SESSION['xxxx']['xxxxx']; 
$con = mysqli_connect("localhost", "xxxx", "xxxx", "test"); 
$save = mysqli_query($con, "INSERT INTO time_logs (username, date_added, Time_In) VALUES('$user', '$date_added', '$time_added')"); 
if(!$con) { 
    die('Could not connect to the database' . mysql_error()); 
    mysql_close($con); 
} 
else 
    header("Location: etc.php"); 

: 이것은 내가 사용했던 코드입니다

$save = mysqli_query($con, "UPDATE time_logs SET Time_Out = $time_added WHERE username = $user"); 

하지만 TIME_OUT의 레코드 필드가 0:00을 계속 표시합니다. 그건 그렇고, 내 date_added는 Date로 설정되고 Time_In과 Time_Out은 Time으로 설정됩니다.

누군가 나를 PHP로 어떻게하는지 보여 줄 수 있다면 정말 고맙겠습니다. 미리 감사드립니다.

+0

"UPDATE time_logs SET Time_Out = $ time_added WHERE username = $ user"라는 메시지가 표시되는 이유는 무엇입니까? – WizKid

+1

@WizKid 죄송합니다. MySQL과 PHP를 처음 접했습니다. 그 라인을 정확하게 에코하려면 어떻게해야합니까? – user3627135

+0

'echo "UPDATE time_logs SET Time_Out = $ time_added WHERE username = $ user"; ' – WizKid

답변

3

숫자가 아닌 데이터 주변에 작은 따옴표가 없습니다. 시도 :

$save = mysqli_query($con, "UPDATE time_logs SET Time_Out = '$time_added' WHERE username = '$user'"); 
+0

나는 그것을 시도하지 않았다는 것을 믿을 수 없다. 그것은 실제로 일했다! 정말 고맙습니다! – user3627135

0

코드에 몇 가지 문제가 있습니다.

date_default_timezone_set('Asia/Taipei'); 
$date_added = date ("Y-m-d"); 
$time_added = date ("h:i:s:a:"); 
$user = $_SESSION['xxxx']['xxxxx']; 
$con = mysqli_connect("localhost", "xxxx", "xxxx", "test"); 
$save = mysqli_query($con, "INSERT INTO time_logs (username, date_added, Time_In) VALUES('$user', '$date_added', '$time_added');"); 
if (!$con) { 
    die('Could not connect to the database' . mysqli_error($con)); 
    mysqli_close($con); 
} 
else 
    header("Location: etc.php"); 

은 특히 당신의 if (!$con) { 점검했다 : 첫째,이 덩어리에서 당신은 모든 mysqli_*해야 할 때 함께 혼합 mysqli_*mysql_* 확장을 사용하고 있습니다. 지금 정리 된 예제를보십시오.

$save = mysqli_query($con, "UPDATE time_logs SET Time_Out = $time_added WHERE username = $user"); 

그래서 다음과 같이해야합니다 :뿐만 아니라, 당신의 업데이트는 문자열 값 주위에 작은 따옴표가없는

$save = mysqli_query($con, "UPDATE time_logs SET Time_Out = '$time_added' WHERE username = '$user'"); 

하지만 여러분의 인생을 더 쉽게, 당신은 같은 쿼리를 포맷 할 수 있도록 이 : 나는 별도의 문자열 &에 쿼리를 설정하는 방법

$query = "UPDATE time_logs SET Time_Out = '" . $time_added . "' WHERE username = '" . $user . "';"; 
$save = mysqli_query($con, $query); 

참고 다음 변수 문자열 자체에 연결을 추가했다. 이렇게하면 텍스트 편집기에서 이와 같은 문제를 쉽게 찾아 낼 수 있습니다. 세미콜론 (;)을 사용하여 각 쿼리를 종료 했으므로 다시 쿼리 문이 끝났음을 명확하게 알 수 있습니다.

+1

필자는이 코드를 적용하여 코드가 복잡해 보이지 않게 할 것입니다. 나는 또한 모든 mysql을 mysqli로 대체했다. 이 팁을 주셔서 감사 드리며 좋은 하루 보내십시오. – user3627135

+0

@ user3627135 감사합니다! 내 도움이 필요하다면 투표 해주세요. – JakeGould

+1

나는 명성을 얻은 후에 분명히 그렇게 할 것입니다. 나는 지금 12 살이에요. – user3627135

관련 문제