Web applications and the N-level are interesting, mainly because the concept of the N-level has expanded due to the widespread adoption of JSON and AJAX, or Flash and XMLRPC. This diagram in Webopedia displays a checkerboard blue line that expresses it well. To summarize: the logic of your company, accessories and presentations can not only exist on the server, but in some cases right in the browser. However, the N-level intent is separability. If you need to change your user interface or database or add other user interfaces, you should not influence your business logic. And this is what your API will define - expecting your HTML and CSS to be dropped for Flex and MySQL to be changed for Oracle.
These requirements are defined, and in some web applications that I used, N-level variations are used simultaneously. Take, for example, LyrisHQ (mail ASP). They have a client web application. Recently, they have been staring at pushing their Flash-based application. Obviously, this is delivering large amounts of data directly to the browser, and there is probably a bit of business logic duplicated in the Flash interface. However, they must support both applications, since each of them is necessary for different (and overlapping) requirements.
Most common PHP applications do not consider delivering large amounts of raw data to the browser. But if you were, it will tell you very quickly how you would like to design your APIs. Most likely, you will need controllers that could discuss XMLRPC, REST, or SOAP ... in addition to the similar internal controller class that used your PHP presentation templates. This will strictly mean for a simple login page, you will have a PHP template for the login form that spoke to the LoginController class. The XML interface will also use the same LoginController class. Just like you thought you would be scared of writing SQL in an Ajax request ... you strictly avoid writing queries in your presentation templates.
Business levels can be more or less strict because often there is no need to switch database brands. In a strict N-level design, how your business objects will talk to your database, you would like to switch from MySQL to MS SQL without overwriting the Business level. Sometimes this is done by modeling objects for each table (Table Gateway), each row (active record), each connection, or each transaction. This is what is useful for PDO or PHP-ADO, but not enough for complete isolation. Java ORM / Persistence levels such as Hibernate demonstrate better isolation, often providing an object query language (OQL).
I myself am currently implementing a back-end transition from a MySQL-based PHP application to MS-SQL. The application has always used direct SQL queries. Imagine how to select a series of queries in a class and either abstract them or subclass them, and hopefully not change the business logic. At a minimum, you will want to make all of your SQL calls indirect. ( SO post in PHP ORM .)
And finally, to your question about OOP: use it as you must fulfill your requirements. My personal technique is to start with the logic right in the PHP view template in a few minutes to make the ball roll, pretty soon I will reorganize it into a class and a template. If I have common ideas, I go out of routines into shared classes, trying to preserve the DNRY principle. (A SO post is here. OOP is not a fundamental requirement for N-level design. DNRY is very important for keeping your code in service, because often the deadlines and scope of -shift destroy the API. Refactor it until you get something what you need to continue. I'm sure OOP will help you there.