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.