Rule of thumb for new concrete floor is to allow 1 day per mm depth to dry out before painting.
Remove the laitance from the concrete before applying any coating. It is a weak powderly layer on the top where the water rose to when being laid. Any coating adhering to the laitance layer will come away easily with the laitance. A good wire brushing is a diy option if not too big an area.
‘Water’ down the first coat of paint 10-20% with suitable thinners for the paint you are using, apply with a masonry paint brush, working well into the floor texture. This will soak into the floor giving a good bond. Apply 2nd/3rd coats soon after to promote good bonding between paint layers. IMHO this is a better approach than trying to seal the floor with PVA and then get the paint to sit on top of that.
Similar for walls, make sure clean and dust free and water down the first coat 10-20%.
I had good results with Bradite PU floor paint (white spirit thinners) and Sandex water based masonry paint (was on offer at Screwfix for a good price at the time).
Am currently doing my ‘old’ garage the same way as I did above for the new garage extension.