yes you need to have a rotor position sensor to drive a BLDC......or use sensorless control, where you assess the rotor position from the back emf voltages.
You need to know the motor coil inductance....and the motor coil current......then basically you commutate from coil to coil, in accordance with the rotor position sensor.
So you bascially set a coil current limit, and PWM the coils one-by-one, and keep a constant current in the coils by PWM....so the current is actually sawtoothing up and down, but you can regard it as "constant".
Since your application is a fan...you can actually do it without rotor position sensing though,
You start commutating from coil to coil at low frequency, and basically entice the rotor to spin.......no jerky changes in commutation frequency, nice and smooth, up to max speed...and the rotor will follow the stator field around........but if you jerk the frequency of commutation, your rotor will go out of synch and youve had it.
...in truth, what i described is difficult, and you are better off sensing the rotor position, and then energising the stator in accordance with that.
You can even just set up the three coils with a current source driving each one....and commutate from one coil to the next like that..just be sure to turn the current source off during the commutation interval otherwise the voltage gets high...but you ccan address that with a comparator sensing the voltage.
But yes, dont put mains voltage onto it...you need to limit the current in the coils.......