mysql php 연동 예제

SELECT, SHOW, EXPLAIN, EXPLAIN 및 결과 집합을 반환하는 다른 문의 경우 mysql_query()는 성공에 대한 리소스 또는 오류에 대한 FALSE를 반환합니다. 이 메서드는 지정된 호출에 반환 되는 모든 반환 합니다. 반환 값이 선택되지 않으므로 반환 값 false 또는 null을 실패한 작업으로 볼 지 여부를 결정하는 것은 사용자의 결정입니다. 기본 PHP 구성을 예로 들어 보겠습니다: PHP 세션을 시작할 때마다 PHP는 session.save_path 경로에서 플랫 파일을 만들며, 이 기본값은 /var/lib/php/세션입니다. 모든 세션 데이터가 저장됩니다. 좀 더 완전한 예: 세션이 PHP에서 시작될 때 무대 뒤에서 일어나는 일은 다음과 같습니다. libmysqlclient를 라이브러리 PHP의 메모리 제한으로 사용하는 경우 데이터가 PHP 변수로 가져오지 않는 한 결과 집합에 사용된 메모리는 계산되지 않습니다. mysqlnd를 사용하면 전체 결과 집합이 포함됩니다. 이 예제에서는 temp_report라는 임시 테이블이 항목 테이블에서 SELECT 작업의 결과로 업데이트됩니다. 잠금을 사용하지 않는 경우 다른 사용자가 항목 테이블을 수정할 수 있으며 UPDATE 작업에 대한 입력으로 사용되는 요약 값 $438.65가 변경될 수 있습니다.

이 트랜잭션에 대해 얻은 두 개의 잠금이 있습니다: 첫째, 항목을 변경할 필요는 없지만 다른 사용자가 변경하지 않기 때문에 항목에 대한 READ LOCK입니다. 둘째, temp_report에 대한 쓰기 잠금은 테이블을 변경하려는 경우 다른 사용자가 변경하는 동안 보고서를 읽거나 쓰지 않기 때문입니다. UNLOCK TABLE 작업은 보유된 모든 잠금을 해제합니다. 잠금은 점진적으로 해제할 수 없습니다. LOCK 테이블을 사용하지 않는 SELECT, UPDATE, INSERT 또는 DELETE 작업은 논리적으로 작업을 방해하는 잠금이 유지되는 경우 진행되지 않습니다. 예를 들어 사용자가 테이블에 쓰기 잠금을 보유하고 있는 경우 다른 사용자는 해당 테이블에서 SELECT, 업데이트, 삽입, 삭제 또는 LOCK 작업을 발행할 수 없습니다. 버퍼링된 쿼리가 기본값이므로 아래 예제에서는 각 API에서 버퍼링되지 않은 쿼리를 실행하는 방법을 보여 줍니다. 다른 유형의 SQL 문의 경우 INSERT, UPDATE, DELETE, DROP 등에서 mysql_query()는 성공 시 TRUE 또는 FALSE 오류를 반환합니다. mysql_query()는 사용자가 쿼리에서 참조하는 테이블에 액세스할 수 있는 권한이 없는 경우 실패하고 FALSE를 반환합니다. 대부분의 경우 작업을 직관적으로 잠금으로 구현하는 경우 잠금이 필요한 경우 잠금을 피할 수 있습니다.

트랜잭션을 디자인할 때 mysql_insert_id(max(max()를 사용하여 사용 가능한 다음 식별자를 찾는 것과 는 달리), 임시 요약 테이블 사용 및 상대적인 업데이트(예: 고객 SET 할인=할인*1.1)를 신중하게 사용하는 것이 실용적입니다. 이전 SELECT 문의 출력을 사용하지 않도록 합니다.