In English counting "zero" values requires pluralization. Sometimes "no" means "zero", sometimes it is used as negation.
Counting is almost always valid, and negation is almost always valid, the one you choose to use depends on your intent and the context. Negation always preserves the plurality of the original statement.
If there is a question or implied question, it is usually best to use negation, which will never change the plurality of the question. For example, for the following statement:
You need a friend to enter.
A possible answer is:
I have no friend with me.
This is only because the question was singular and you are intended to negate it. If you responded with "I have no friends with me", it would be awkward, as it would mean you both pluralized and negated the original statement, where you should have only negated it.
Often times due to the ambiguity the use of "no" for "zero" is avoided, and can come across as a mistake. It is sometimes also used to emphasize certain words.
It will come across as more clear if you work around "no" for negation, such as:
I do not have a friend with me.
This makes it clear you want to negate the "friend with me" clause, instead of trying to count how many friends you have with you.
EDIT
I hoped I wouldn't have to get into the different between "form" and "meaning", as it is really convoluted, but I can't see a way to answer @gotube's comment with out. So... here we go.
Two sentences can have technically identical meaning, but different form. Often this is used for subtext (meaning not explicitly written, to imply politeness, intention, etc).
The best explanation of the differences between these I can think of, is using JavaScript (again, sorry for the complexity, but English doesn't do a great job at distinguishing these two, and I feel some English Language Learnings may know JavaScript):
// Negation
!people.some(person => isIsland(person)) === true
vs
// Counting
person.filter(person => isIsland(person)).length === 0
And so, "I have no friend with me", is not counting zero items, it is negation. The technical meaning (ignoring subtext) is identical to counting zero items. Mathematically speaking it is identical, which makes it confusing, but... it is just a different way to phrase it, and therefore, has different rules.