Current Location: Home> Latest Articles> How to Use the mysqli_stmt::__construct Function? A Detailed Guide on Its Basic Usage and Steps

How to Use the mysqli_stmt::__construct Function? A Detailed Guide on Its Basic Usage and Steps

gitbox 2025-09-16
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Article Generation Script - PHP Example</span></span><span>
</span><span><span class="hljs-comment">// Preliminary system-generated part unrelated to the main content</span></span><span>
</span><span><span class="hljs-comment">// --------------------------------------------------</span></span><span>
<p></span>?></p>
<p><hr></p>
<p><h1>How to Use mysqli_stmt::__construct Function? A Detailed Guide on Its Basic Usage and Steps</h1></p>
<p><p><code>mysqli_stmt::__construct<span>

  • $mysql: An already established mysqli connection object.
  • $query: The SQL statement to be prepared, with parameters represented using placeholders ?.

After construction, a mysqli_stmt object is returned, which can then be used for binding, executing, and other operations.

2. Basic Usage Steps

  1. Establish a Database Connection
    First, use a mysqli object to connect to the database.
  2. Create a Prepared Statement Object
    Use mysqli_stmt::__construct or $mysqli->prepare() to create the prepared statement.
  3. Bind Parameters
    Use the bind_param method to bind actual variables to the placeholders.
  4. Execute the Statement
    Execute the SQL using execute.
  5. Handle the Results
    If there are query results, use bind_result or get_result to fetch data.

3. Code Example

<span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span>="</span><span><span class="hljs-title">php</span></span><span>">
// Establish database connection
$</span><span><span class="hljs-title">mysqli</span></span><span> = </span><span><span class="hljs-title">new</span></span><span> </span><span><span class="hljs-title">mysqli</span></span><span>("</span><span><span class="hljs-title">localhost</span></span><span>", "</span><span><span class="hljs-title">username</span></span><span>", "</span><span><span class="hljs-title">password</span></span><span>", "</span><span><span class="hljs-title">testdb</span></span><span>");

</span><span><span class="hljs-title">if</span></span><span> ($</span><span><span class="hljs-title">mysqli</span></span><span>-></span><span><span class="hljs-title">connect_errno</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Connection failed: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}

</span><span><span class="hljs-comment">// Create a prepared statement using mysqli_stmt::__construct</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli_stmt</span></span><span>(</span><span><span class="hljs-variable">$mysqli</span></span><span>, </span><span><span class="hljs-string">"SELECT id, name FROM users WHERE age > ?"</span></span><span>);

</span><span><span class="hljs-comment">// Bind parameters (here ? corresponds to an integer)</span></span><span>
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">18</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>);

</span><span><span class="hljs-comment">// Execute the statement</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();

</span><span><span class="hljs-comment">// Bind the results</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_result</span></span><span>(</span><span><span class="hljs-variable">$id</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>);

</span><span><span class="hljs-comment">// Fetch and output results</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch</span></span><span>()) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"User ID: <span class="hljs-subst">$id</span>, Name: </span><span><span class="hljs-subst">$name</span></span><span>\n";
}

</span><span><span class="hljs-comment">// Release resources</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();

4. Notes

  • mysqli_stmt::__construct is the object-oriented approach. A common shortcut is to directly use $mysqli->prepare(), which has the same effect.
  • When using prepared statements, always call bind_param to bind all placeholders before execution.
  • For queries with no return results, such as INSERT or UPDATE, you can directly check the return value of execute().

5. Conclusion

mysqli_stmt::__construct is a key step in PHP’s object-oriented style for creating prepared statements. Mastering its usage ensures safer and more efficient SQL operations. In practical development, it is recommended to prioritize prepared statements over direct SQL concatenation to enhance system robustness and security.