I quote from Haynes
Engine rotates but will not start.
1. Fuel tank empty.
2. Battery discharge (in and rotate slowly).
3 Battery terminal connections loose orcorroded.
4. Leaking fuel injectors, faulty fuel pump, pressure regulator,etc
5 broken or stripped timing belt.
6 Ignition components damaged or damp.
7 worn, faulty or incorrectly gapped spark plugs.
8 broken, loose or disconnected wiring in the starting circuit.
9 broken loose or disconnected wires at the the ignition coilor faulty coil.
Engine hard to start when cold.
1 battery discharged or low.
2. Malfunctioning fuel system.
3. Faulty coolant temperature sensor.
4. Injector leaking.
5. faulty ignition system.