Cameron has a good idea in jailing anyone who carries a knife but the prisons themselves need to be reformed. Yes, emphasis on training & rehabilitation is a good idea but you need a stick to balance that carrot.
Make the prison itself as unpleasant as possible, able to just cater for their basic human rights (nutritous food, health, hygiene, shelter) and no more so that they can see the consequece of commiting a crime again