As powerful and useful as the CodeIgniter 4 Query Builder class methods and functions are, there are times when you need to hand-craft your own queries. Perhaps they are complex. Or, you would just rather write the raw SQL. Learn how to safely use the input you need – typically as part of the WHERE clause conditional(s) – using 2 different parameter binding variations with examples in MySQL.

The Newsletter for PHP and MySQL Developers
Receive a copy of my ebook, “10 MySQL Tips For Everyone”, absolutely free when you subscribe to the OpenLampTech newsletter.
Query Builder where() function
Related: Read the detailed guide I wrote on the CodeIgniter 4 Query Builder where() function for more information about the various parameter structures available.
For the examples in this blog post, I’ll be logging and showing the queries that are sent to the server by using the $db->getLastQuery() method. Read and learn more about $db->getLastQuery() in this article.
Positional Parameter Bindings
Positional parameter bindings (?) are defined in the SQL standard and are supported for CodeIgniter 4 as well.
In this first example, I use the WHERE clause conditional filter, `name` = ?, and provide the filter value ‘Drama’ in the $db->query() methods’ 2nd array() parameter:
And below we see the query sent to the server as logged from $db->getLastQuery():
Help support this blog and content with a tip. Thank you!
Named Bindings
Not only can you use the positional parameter bindings but, named placeholder bindings are allowed in the queries as well.
Simply surround the named bindings with colons and use an associative array as the 2nd parameter in the $db->query() method:
Again, we see the exact query sent to the server as logged from $db->getLastQuery():
📰 Get your brand, product, or service the attention it deserves with affordable classified ad placement in the OpenLampTech newsletter. I appreciate your support!
Positional Parameter Bindings for IN()
If you need to use the IN() operator in any queries, positional parameter bindings can be used for this as well.
Place the ‘?‘ after the IN keyword (without any parentheses – they will be included automatically), and include an array of values inside the array 2nd parameter for $db->query():
Notice the query has the IN() operator with values.
Although the example queries in this article are quite simple, you now have an idea of how to use parameter binding in CodeIgniter 4 with the query() method in those instances you have more complex querying needs.
Thank you for reading this post. Please share it with someone else who would enjoy it as well.
Josh Otwell has a passion to grow as a PHP Developer, SQL expert, and technical blogger/writer.
Disclaimer: The majority of examples in this post, are performed in a personal development/learning workstation environment and should not be considered production quality or ready. Your particular goals and needs may vary. Like always, just because you can do something doesn’t mean you should. My opinions are my own.
More ways I can help
- Need hosting for your next web application or WordPress site? I highly recommend Hostinger and use them to host my niche bass fishing site. The service is second to none.
- 🔒5 Truths I’ve Come To Realize As a Self-taught Developer
- Desktop and mobile wallpapers, digital downloads, photography services, Shopify and WooCommerce customizations, and content writing – all in one E-commerce Shop. Find your next digital purchase today!
Disclosure: Some of this blog post’s services and product links are affiliate links. At no additional cost to you, should you make a purchase by clicking through one of them, I will receive a commission.
The Newsletter for PHP and MySQL Developers
Receive a copy of my ebook, “10 MySQL Tips For Everyone”, absolutely free when you subscribe to the OpenLampTech newsletter.
📰 Get your brand, product, or service the attention it deserves with affordable classified ad placement in the OpenLampTech newsletter. I appreciate your support!
One thought on “CodeIgniter 4 Query Parameter Binding with examples in MySQL”