2011-08-14 7 views
0

오늘 저는 PHP에 큰 문제가 있습니다. MySQL 데이터베이스에서 행을 업데이트하려고합니다. 가장 큰 문제는 phpMyAdmin에 직접 삽입하지만 PHP 스크립트에는 삽입하지 않으면 쿼리가 작동하기 때문입니다.업데이트 쿼리가 작동하지 않습니다.

(이 $은 SQLQuery의 값) 내 쿼리를 따르 내 스크립트에서

UPDATE my_table SET id = '64', title = 'test', another_column = 'asdasdasdasd 2', category = '1', author = '1', status = '0', column = '0', date_created = '2011-08-13 15:33:54' WHERE id = '64' 

, 나는 "SET"하고 배열에서 ""온 때문에 사이의 코드를 생성하는 루프를 만들었습니다.

또한 당신이 저를 요구하기 전에 연결이 열려있는 경우, I (아래)이 코드로 확인했는데 "열"반환 :

if (!$conn->connection) echo "closed"; 
else echo "opened"; 

쿼리를 실행하는 내 스크립트를

if (mysql_query($sqlQuery, $conn->connection)) { 
    $sqlResult = array(
     "status" => "ok", 
     "result" => "edited" 
    ); 
} else { 
    $sqlResult = array(
     "status" => "error", 
     "result" => "$sqlQuery" 
    ); 
} 

항상 "else"배열을 반환합니다 (status = error 및 result = $ sqlQuery).

+2

['mysql_error를 같이 역 따옴표로 묶어야합니다 MySQL은 예약어하여 오류가 아마 원인이되기 전에()'] (http://php.net/manual/en/function.mysql-error.php)를 참조하십시오. – Sampson

+0

호기심에서 MySQL 데이터베이스 (명령 행 또는 MySQL Workbench)에 대해 직접 쿼리를 실행 해 보셨습니까? –

답변

2

id = '64' WHERE id = '64'을 설정 하시겠습니까? 어쨌든 ID는 INT이므로 인용하지 마십시오.

또한 "result" => "$sqlQuery""result" => $sqlQuery으로 변경하고 디버깅을 돕기 위해 var_dump($sqlQuery)을 수행하십시오.

+0

+1 .. 적어도 ID는 int라고 희망 할 것입니다. P – JustDanyul

+0

tryed는 전에 말한 것을 수행합니다 (is_numeric인지 확인하고 따옴표를 제거하기 위해 루프를 실행합니다). –

+0

MAMP는 오류를 숨기기 위해 기본적으로 설정됩니다. 나는 그것을 알지 못했다! 죄송합니다. 오류가 발생합니다 (이 튜토리얼을 사용한 후에는 http://www.jhuskisson.com/code-tidbits/re-enabling-error-reporting-in-mamp) 오류를 수정합니다. 연결이 닫혀 있기 때문에 문제가 발생했습니다. 이전 문을 닫고 새 쿼리를 실행하고 쿼리를 실행했습니다. 잘 작동한다! 감사합니다. –

1

id 필드가 자동 증가 기본 키입니까? 그렇다면 쿼리에서 설정할 수 없습니다 (귀하의 WHERE 절의 일부이므로 어쨌든 사용해서는 안됩니다). 일반적으로 실제로 변경되는 필드 만 업데이트해야하며 기본 키 값은 대개 업데이트의 일부로 변경하면 안됩니다.

+0

MAMP는 기본적으로 오류를 숨기기 위해 설정됩니다. 나는 그것을 알지 못했다! 죄송합니다. 오류가 발생합니다 (이 튜토리얼을 사용한 후에는 http://www.jhuskisson.com/code-tidbits/re-enabling-error-reporting-in-mamp) 오류를 수정합니다. 연결이 닫혀 있기 때문에 문제가 발생했습니다. 이전 문을 닫고 새 쿼리를 실행하고 쿼리를 실행했습니다. 잘 작동한다! 감사합니다. –

3

당신이해야 echo mysql_error(); 출력에 오류 메시지가 디버그하려고하지만, column = '0'column 때문에 당신이 고려 `column` = '0'

+0

몇 가지 컬럼 이름을 변경했습니다."my_table", "another_column"및 "column"은 실제 이름이 아닙니다 (그러나 실제 이름은 예약되지 않은 것 같습니다). –

+0

@ 루카스 오케이, 잘 알고 있습니다. mysql_error()의 출력을 보여 주시겠습니까? – Paulpro

+0

MAMP는 기본적으로 오류를 숨기도록 설정되어 있습니다. 나는 그것을 알지 못했다! 죄송합니다. 오류가 발생합니다 (이 튜토리얼을 사용한 후에는 http://www.jhuskisson.com/code-tidbits/re-enabling-error-reporting-in-mamp) 오류를 수정합니다. 연결이 닫혀 있기 때문에 문제가 발생했습니다. 이전 문을 닫고 새 쿼리를 실행하고 쿼리를 실행했습니다. 잘 작동한다! 감사합니다. –

관련 문제