En fait, vous venez de faire une erreur mineure - probablement une erreur de copier-coller.
La ligne suivante nécessite 8 paramètres au lieu de 4 car vous avez mis des points d'interrogation là où vous auriez dû mettre des noms de colonnes.
insert into `stocks`(?,?,?,?) values (?,?,?,?);";
Si vous le modifiez comme suit (en remplaçant les noms de colonne par vos vrais noms du tableau des stocks), il devrait fonctionner comme prévu.
insert into stocks(ColumnNameOne, ColumnNameTwo, ColumnNameThree, ColumnNameFour)
values (?, ?, ?, ?);