現在の位置: ホーム> 最新記事一覧> [mysqli :: initとmysqli :: connect関数を組み合わせて、データベース接続の操作プロセスを簡素化する方法

[mysqli :: initとmysqli :: connect関数を組み合わせて、データベース接続の操作プロセスを簡素化する方法

gitbox 2025-06-13

1。mysqli :: initmysqli :: connect的基本概念

mysqli :: init

mysqli :: init是mysqli扩展中一个非常重要的方法、它用于初始化一个mysqli对象。该方法不需要传入任何参数、返回一个新的mysqli对象、之后可以使用该对象调用其他的mysqli方法。

 <span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysqli_init</span></span><span>();
</span></span>

mysqli :: connect

mysqli :: connect

 <span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">connect</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'user'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>, </span><span><span class="hljs-string">'database'</span></span><span>);
</span></span>

2

通过结合这两个函数、我们可以将数据库连接过程封装到一个函数中、从而实现代码的复用和简洁。下面是如何将这两个函数结合使用的示例。

示例:创建一个数据库连接类

<span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">Database</span></span><span> {
    </span><span><span class="hljs-keyword">private</span></span><span> </span><span><span class="hljs-variable">$mysqli</span></span><span>;

    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">__construct</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$host</span></span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>) {
        </span><span><span class="hljs-comment">// &#20351;&#29992; mysqli::init &#21021;&#22987;&#21270;&#23545;&#35937;</span></span><span>
        </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli = </span><span><span class="hljs-title function_ invoke__">mysqli_init</span></span><span>();
        
        </span><span><span class="hljs-comment">// &#20351;&#29992; mysqli::connect &#24314;&#31435;&#36830;&#25509;</span></span><span>
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli-&gt;</span><span><span class="hljs-title function_ invoke__">connect</span></span><span>(</span><span><span class="hljs-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>)) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&#25968;&#25454;&#24211;&#36830;&#25509;&#25104;&#21151;&#65281;"</span></span><span>;
        } </span><span><span class="hljs-keyword">else</span></span><span> {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&#25968;&#25454;&#24211;&#36830;&#25509;&#22833;&#36133;&#65306;"</span></span><span> . </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli-&gt;connect_error;
        }
    }

    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">getConnection</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli;
    }
}
</span></span>

在上面的示例中、我们将mysqli :: initmysqli :: connect结合在一个数据库类中、这样我们就可以通过创建类的实例来进行数据库连接操作。这个方式不仅简化了代码、还可以更方便地进行错误处理和扩展。

使用类进行连接

<span><span><span class="hljs-variable">$db</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">Database</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'root'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>, </span><span><span class="hljs-string">'test_db'</span></span><span>);
</span></span>

一旦类被实例化、它会尝试连接到数据库。如果连接成功、控制台会输出、「数据库连接成功!」。如果连接失败、则输出失败信息。

3。

虽然上述代码已经简化了数据库连接的流程、但在实际开发中、我们常常需要避免每次都重新连接数据库。为了优化数据库连接、可以使用单例模式、确保数据库连接只创建一次。

示例:数据库连接类使用单例模式

<span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">Database</span></span><span> {
    </span><span><span class="hljs-keyword">private</span></span><span> </span><span><span class="hljs-variable">$mysqli</span></span><span>;
    </span><span><span class="hljs-keyword">private</span></span><span> </span><span><span class="hljs-built_in">static</span></span><span> </span><span><span class="hljs-variable">$instance</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;

    </span><span><span class="hljs-keyword">private</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">__construct</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$host</span></span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>) {
        </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli = </span><span><span class="hljs-title function_ invoke__">mysqli_init</span></span><span>();
        </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli-&gt;</span><span><span class="hljs-title function_ invoke__">connect</span></span><span>(</span><span><span class="hljs-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>)) {
            </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'&#25968;&#25454;&#24211;&#36830;&#25509;&#22833;&#36133;: '</span></span><span> . </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli-&gt;connect_error);
        }
    }

    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-built_in">static</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">getInstance</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$host</span></span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>) {
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-built_in">self</span></span><span>::</span><span><span class="hljs-variable">$instance</span></span><span> == </span><span><span class="hljs-literal">null</span></span><span>) {
            </span><span><span class="hljs-built_in">self</span></span><span>::</span><span><span class="hljs-variable">$instance</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">Database</span></span><span>(</span><span><span class="hljs-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>);
        }
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-built_in">self</span></span><span>::</span><span><span class="hljs-variable">$instance</span></span><span>;
    }

    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">getConnection</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli;
    }
}
</span></span>

通过这种方式、我们确保了每次访问数据库时都返回同一个、 mysqli实例、避免了多次连接数据库的开销、提高了性能。

使用单例模式获取数据库连接

<span><span><span class="hljs-variable">$db</span></span><span> = </span><span><span class="hljs-title class_">Database</span></span><span>::</span><span><span class="hljs-title function_ invoke__">getInstance</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'root'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>, </span><span><span class="hljs-string">'test_db'</span></span><span>);
</span></span>

每次调用データベース:: getInstance()方法时、都会返回同一个数据库连接实例、这样在项目中可以更高效地管理数据库连接。

4。

在进行数据库连接时、我们经常需要捕获并处理连接错误。可以通过mysqli :: connect_error属性来获取错误信息、并根据错误类型采取相应的措施。

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'&#25968;&#25454;&#24211;&#36830;&#25509;&#22833;&#36133;: '</span></span><span> . </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;mysqli-&gt;connect_error);
}
</span></span>

通过这种方式、能够确保当连接失败时、能清晰地输出错误信息、帮助开发人员迅速定位问题。

5。

mysqli :: initmysqli :: connect方法、我们可以简化数据库连接的过程、减少重复代码的编写。封装成类或使用单例模式、能够使数据库连接更加高效、简洁、同时提高代码的可维护性。理解和灵活使用这些方法、将对你的php开发工作大有裨益。