Wenn du beim prepare()-Aufruf mit Fragezeichen arbeitest, dann dürften die Parameter nicht benannt werden, wie du es jetzt getan hast. Wenn man die Parameter mit Namen ansprechen möchte, muss der Code wie folgt aussehen:
$statement = $pdo->prepare("INSERT INTO user_data.users('nickname', 'eMail', 'password', 'name', 'age', 'sex') VALUES (:nickname, :eMail, :password, :name, :age, :sex)");
$result = $statement->execute(
array(
'nickname' => $nickname,
'eMail' => $eMail,
'password' => $pw_hash,
'name' => $name,
'age' => $age,
'sex' => $sex
)
);
Mit den Fragezeichen so:
$statement = $pdo->prepare("INSERT INTO user_data.users('nickname', 'eMail', 'password', 'name', 'age', 'sex') VALUES (?, ?, ?, ?, ?, ?)");
$result = $statement->execute(array($nickname, $eMail, $pw_hash, $name, $age, $sex));
Steht doch alles in der Dokumentation.