And that's how insertions work. One at a time. You can insert multiple only based off of existing recordsets.
Back to square one; you can use prepared statements and a bind in order to perform batch insertions. This limits the server request to only the amount of data to modify and not the entire sql string.
Okay, to be fair you can insert multiple in a single string:
INSERT INTO TABLE VALUES (1), (2), (3), but that's not the same as a batch since you still need to logically split everything you want anyway.