단일 mysql_query()의 여러 SQL 문
단일 mysql_query() 함수 호출을 사용하여 여러 SQL 문을 동시에 수행하는 것은 불가능합니다. 표준 MySQL API. 이는 악의적인 사용자가 임의의 SQL 문을 실행하여 잠재적으로 데이터베이스를 손상시키는 것을 방지하기 위한 것입니다.
이러한 제한으로 일부 사용자는 실망할 수도 있지만 SQL 삽입 공격에 대한 보안 조치 역할을 한다는 점을 강조하는 것이 중요합니다. 여러 문을 실행하는 기능을 제한함으로써 공격자가 취약점을 악용하고 중요한 데이터에 대한 무단 액세스를 얻을 가능성이 줄어듭니다.
그러나 여러 문을 원자적으로 실행하는 대체 접근 방식이 있습니다. 한 가지 방법은 트랜잭션을 사용하는 것입니다. 트랜잭션 블록 내에 여러 문을 포함하면 모든 문이 성공적으로 실행되거나 전혀 실행되지 않도록 할 수 있습니다. 이는 개별 mysql_query() 호출로는 불가능한 수준의 원자성 및 데이터 무결성을 제공합니다.
예를 들어, 단일 트랜잭션 내에서 질문에 언급된 두 개의 UPDATE 문을 수행하려면 다음 코드를 사용할 수 있습니다. :
mysql_query("BEGIN TRANSACTION"); mysql_query("UPDATE table SET name = 'bob' WHERE name = 'jim'"); mysql_query("UPDATE table SET age = 55 WHERE name = 'jim'"); mysql_query("COMMIT TRANSACTION");
트랜잭션 내에서 문을 래핑하면 두 문이 모두 성공적으로 실행되거나 둘 다 실행되지 않도록 할 수 있습니다. 이 접근 방식을 사용하면 더 효과적으로 제어할 수 있으며 부분 업데이트나 기타 바람직하지 않은 결과를 방지할 수 있습니다.
위 내용은 단일 mysql_query() 호출에서 여러 SQL 문을 실행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!