當前位置: 首頁> 最新文章列表> 遇到連接失敗時,如何通過mysqli::$server_info 獲取MySQL 服務器信息並處理?

遇到連接失敗時,如何通過mysqli::$server_info 獲取MySQL 服務器信息並處理?

gitbox 2025-06-11

在使用php的mysqli擴展連接mysql數據庫時,遇到連接失敗是很常見的情況。通常我們通過檢查連接錯誤碼和錯誤信息來判斷具體原因,但有時我們也希望獲取服務器的一些信息以輔助診斷,比如mysql服務器版本等。

本文將講解如何使用mysqli類的$ server_info屬性在連接成功後獲取服務器信息,並結合連接失敗時的處理方法,幫助你更好地掌握數據庫連接狀態。 ,幫助你更好地掌握數據庫連接狀態。


1。連接mysql的基本示例

首先,正常連接數據庫的基本流程是::

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">'gitbox.net'</span></span><span>, </span><span><span class="hljs-string">'username'</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><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'&#36830;&#25509;&#22833;&#36133;&#65292;&#38169;&#35823;&#20195;&#30721;&#65306;'</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno . </span><span><span class="hljs-string">'&#65292;&#38169;&#35823;&#20449;&#24687;&#65306;'</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'&#25104;&#21151;&#36830;&#25509;&#21040; MySQL &#26381;&#21153;&#22120;&#65292;&#29256;&#26412;&#20449;&#24687;&#65306;'</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;server_info;

</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

在這裡, $ mysqli-> server_info會返回服務器版本信息,比如8.0.31


2。連接失敗時獲取服務器信息?

需要說明的是, $ server_info只能在連接成功後使用。如果連接失敗,比如網絡不通或者認證失敗, $ $ server_info獲取任何信息的

因此,若你希望在連接失敗時仍能獲取到服務器信息,必須先保證連接成功,ping服務器或使用其他接口)來輔助判斷。


3。實際場景中的錯誤處理示範

這裡是一個結合錯誤檢測與服務器信息獲取的示例:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = @</span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">'gitbox.net'</span></span><span>, </span><span><span class="hljs-string">'username'</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><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno) {
    </span><span><span class="hljs-comment">// &#36830;&#25509;&#22833;&#36133;&#65292;&#36755;&#20986;&#38169;&#35823;&#30721;&#21644;&#38169;&#35823;&#20449;&#24687;</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'&#36830;&#25509;&#22833;&#36133;&#65292;&#38169;&#35823;&#20195;&#30721;&#65306;'</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno . </span><span><span class="hljs-string">'&lt;br&gt;'</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'&#38169;&#35823;&#20449;&#24687;&#65306;'</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error . </span><span><span class="hljs-string">'&lt;br&gt;'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-comment">// &#36830;&#25509;&#25104;&#21151;&#65292;&#33719;&#21462;&#26381;&#21153;&#22120;&#20449;&#24687;</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'&#25104;&#21151;&#36830;&#25509; MySQL&#65292;&#26381;&#21153;&#22120;&#29256;&#26412;&#65306;'</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;server_info;
}

</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

這裡使用了@抑制了構造函數的警告輸出,通過$ mysqli-> connect_errno判斷錯誤。


4。總結和建議

  • mysqli :: $ server_info只能在連接成功後調用,否則會報錯或返回空。

  • 連接失敗時,優先使用$ mysqli-> connect_errno$ mysqli-> connect_error來判斷原因。

  • 如果想要在連接失敗時了解服務器狀態,ping telnet)或服務器端日誌。

  • 結合捕獲異常和錯誤處理機制,提升程序的健壯性和用戶體驗。 ,提升程序的健壯性和用戶體驗。


這樣,在遇到連接失敗時,我們可以清晰地捕獲並輸出錯誤信息,並在成功連接後獲取服務器版本等詳細信息,幫助我們排查和處理問題。 ,幫助我們排查和處理問題。