當前位置: 首頁> 最新文章列表> mysqli::$server_info 返回空值通常是什麼原因造成的,有哪些常見錯誤及對應的解決方法?

mysqli::$server_info 返回空值通常是什麼原因造成的,有哪些常見錯誤及對應的解決方法?

gitbox 2025-06-21
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 這部分代碼與文章內容無關,作為示例佔位</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"這是文章開頭無關內容的示例。"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>mysqli::</span><span><span class="hljs-variable">$server_info</span></span><span> 返回空值通常是什麼原因造成的,有哪些常見錯誤及對應的解決方法?</h1>

<p>在使用 PHP 的 <code>mysqli

以上代碼中,如果$mysqli->connect_error不為空,說明連接失敗,此時$mysqli->server_info可能為空。

常見錯誤1 :連接信息錯誤導致連接失敗

如用戶名或密碼錯誤,數據庫地址錯誤等。

常見錯誤2 :訪問屬性時連接未成功

直接訪問$mysqli->server_info ,但未判斷連接是否成功。

常見錯誤3 :多線程或異步環境下對象狀態異常

mysqli 對象狀態不穩定,可能導致屬性讀取異常。

三、解決方法

  1. 確保連接成功後再訪問server_info
    使用$mysqli->connect_error$mysqli->connect_errno檢查連接狀態。
  2. 使用異常處理機制<br> 通過開啟mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);來捕獲錯誤,避免靜默失敗
  3. 確認MySQL 服務器正常運行<br> 檢查數據庫服務器狀態,確認版本信息可用
  4. 避免在連接關閉後訪問屬性<br> 確保在調用close()前使用相關屬性,避免對象狀態異常

四、示例改進代碼

</span><span><span class="hljs-title function_ invoke__">mysqli_report</span></span><span>(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

</span><span><span class="hljs-keyword">try</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">'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><span class="hljs-comment">// 確認連接成功</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_errno) {
        </span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">"連接失敗: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
    }

    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"MySQL 服務器版本: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->server_info;

    </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"錯誤訊息: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}

五、總結

mysqli::$server_info返回空值時,首先要確認MySQL 連接是否成功,這是最常見的原因。其次,要注意訪問該屬性的時機,確保mysqli 對象處於有效連接狀態。最後,合理使用錯誤報告和異常捕獲機制,可以幫助快速定位並解決問題。