It is SQL parameter binding.
Basically this code :
$sql = sprintf(
'INSERT INTO %s(%s) values (%s)',
$table,
implode(', ', array_keys($parameters)),
':' .implode(', :', array_keys($parameters))
);
will produce a string like this :
INSERT INTO users(name, etc...) values (:name, :etc...)'
Preparing this statement with pdo , you will tell it to wait for an array with a key of name.
Then you execute passing your parameter array wich happens to have a key of name.
So it will bind the value of the key nameto the :name in the request.