Contrary to Jonathan Hobbs' comment, if you know PHP and want to build (the backend of) a web-based game with it, that's totally fine. PHP is powerful enough to run Facebook, and your game is unlikely to be more complex, resource hungry, or demanding in terms of responsiveness than that.
Having that said, you might want to use one of the many PHP frameworks available to make your life easier.
For example, with regard to items, you can use a framework's system for handling data objects to define the classes Character, Equipment, Item, and Skill (and child classes for specific Items, Skills, etc.). Character, Equipment, Item, and Skill would correspond to tables in your database, so in the table 'item' there would be a row for each item. Then, when a user makes a request, you load these entries from the database and construct the objects accordingly. (This is similar to your first approach for storing item data.)
In a framework called Yii, you could then do something like this:
/**
* Load a character and all related items and skills.
* Do this when the user logs in. You can save the data in a session or
* reload it every time the user makes a new request
*/
$Character = Character::model()->with('items, skills')->find(
'username:=username',
array('username' => 'demo')
);
// Find a skill with id 5 and attach it to the character
$Fireball = Skill::model()->findByPk(5);
$Character->addSkill($Fireball);
// Manipulate attributes of the character table
$Character->money -= 500;
// Update the new state of the character in the database
$Character->update();
Don't worry about the specifics of this code; I just want to demonstrate how much easier it is to retrieve, manipulate, and save game related data in PHP frameworks as opposed to native PHP.
When it comes to tutorials, just read about software engineering in general (OOP, design patterns, web technologies), and the PHP framework of your choice in particular. Games don't add any magic to software engineering.