내 머리카락을 더 이상 찢어 버리지 않기 위해서, PHP MySQL과 함께 번거로운 시간을 보내고 있기 때문에 여기서 질문을 던지 리라고 생각했습니다. 업데이트 : 꽤 많이 사용하고 이해할만한 것으로 생각합니다!MySQL 업데이트에서 헤더 이름을 허용하지 않습니까?
기본적으로 MySQL 업데이트 기능을 중단시키는 것으로 알려진 테이블 헤더 이름이 있습니까? 내가 코드에 '트리거'라는 테이블 헤더를 포함 할 경우
UPDATE table_name SET
part_number='000 - New Product',
product_code='1',
barcode_ref='1',
type='new type'
WHERE id='999'
그러나, 그것은 나누기 : 나는 예를 들어, 완벽하게 작동하는 업데이트는 mysql_query 기능이! 나는 '트리거'라는 컬럼의 동일한 복사본을 만들어 'testing_t'을 다시는 이름의 즉시 모든 것이 이전과 완벽하게 작동 한 **You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'trigger='YES', part_number='000 - New Product', product_code='1', barcod' at line 1**
:
UPDATE table_name SET
part_number='000 - New Product',
trigger='YES',
product_code='1',
barcode_ref='1',
type='new type'
WHERE id='999'
위의 SQL은의 오류를 반환합니다. 둘 다 내 mysql_real_escape_string을 사용하여 업데이트 명령에 사용하기 위해 변수를 덤프 시도하고 인라인, 그리고 하드 코딩 문자열을 시도하고 여전히 휴식.
누구든지이 문제에 관해 밝힐 수 있습니까? 이상 적으로는 사이트 전체에서 참조를 수정하고 싶지 않기 때문에 표 머리글 이름을 변경하지 않아도됩니다. 분명히 다른 옵션이 없다면 나는 할 것이다. 그러나 나는 바보가되어서 누군가가 왜 일어나는 지/일어나는 것을 어떻게 멈추는 지 설명 할 수 있기를 바라고있다. 사전에
감사합니다,
조
있습니다. 트리거는 연관된 DML 문이 실행될 때 자동으로 트리거됩니다. 그래서 테이블에 필드 이름 트리거를 사용할 수 없다. 트리거 컬럼 이름을 바꿀 필요가있다. –
예약어와의 충돌을 피하기 위해 백틱 문자를 사용하여 MySQL 테이블 이름과 열 이름을 이스케이프 처리한다. 그러나 일반적으로 열 이름에 SQL 예약어를 사용하는 것을 피하는 것이 좋습니다. 나중에 코드의 독자 나 다른 독자가 혼란을 일으킬 수 있기 때문입니다. – SDC
답장을 보내 주셔서 감사합니다. 그럴 수도 있다고 생각했습니다.열 이름을 이스케이프했는데 이름이 완전히 바뀌므로 이름 바꾸기 만 유일한 옵션입니다! – JoeP