What they're saying is dead-on-the-money ... and considerably easier, too!
Your query becomes:
INSERT INTO accountlist VALUES ("", ?, ?, ?, ?)
The ?
symbols (which, notice, are not enclosed in quotes) are the parameters.
And now, each time you execute the query, you provide an array with four values in it, to be substituted left-to-right in the statement. Those values can be anything, and you don't have to care about quote-marks and such, because they are not part of the SQL. Instead, the parameters are inputs.
And if you have to do "a whole lot of this," say thousands or millions of times, you prepare the statement just once, then execute the prepared statement as many times as necessary, providing a different array of values as inputs each time.
There are also plenty of libraries out there that let you specify parameters by name, giving a hash of named values, e.g.
INSERT INTO accountlist VALUES ("", :user:, :pwd:, :mail:, :date:)
{ 'user' => 'fred', 'pwd' => 'secret', 'mail' => 'foo@bar.com', 'date' => today() }
... and the library turns it into a valid SQL statement like the one shown above.
Much more secure, much less headache, and noticeably more efficient.