Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie MySQLI :: get_warnings ohne Warnung? Wie kann ich Probleme beheben?

Verwenden Sie MySQLI :: get_warnings ohne Warnung? Wie kann ich Probleme beheben?

gitbox 2025-08-21
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Hier ist der Teil vor Code oder Deklaration, der nicht mit dem Inhalt des Artikels zusammenhängt,Kann bei Bedarf frei geändert werden</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(E_ALL);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h2>verwenden <code>mysqli::</span><span><span class="hljs-variable constant_">get_warnings</span></span><span>

Rufen Sie nach der Ausführung Get_Warnings () an, um festzustellen, ob es eine Warnung gibt.

2. Überprüfen Sie den Zeitpunkt des Aufrufens von Get_Warnings ()

Es muss unmittelbar nach der Ausführung von SQL aufgerufen werden und bevor die nächste Anweisung ausgeführt wird. Andernfalls wird die vorherige Warnmeldung gelöscht.

3. Durch alle Warnungen iterieren

Manchmal gibt es mehrere Warnungen, die durchschleifen müssen:

 
</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_warnings</span></span><span>();
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$warn</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"Warning: %s, %s, %s\n"</span></span><span>, </span><span><span class="hljs-variable">$warn</span></span><span>->errno, </span><span><span class="hljs-variable">$warn</span></span><span>->sqlstate, </span><span><span class="hljs-variable">$warn</span></span><span>->message);
    </span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$warn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">next</span></span><span>();
}

4. Überprüfen Sie die MySQL -Serverkonfiguration

Bestätigen Sie, dass der Server die Warnausgabe nicht ausschaltet. Überprüfen Sie, ob der strenge Modus in SQL_MODE aktiviert ist. Einige Modi können zu Warnungen als Fehler behandelt werden.

 <span class="fun">Variablen wie </span> <span> <span class = "hljs-string"> &#39;sql_mode&#39; </span> </span> <span>;</span>

5. Bestätigen Sie die Client -Codierung und den Datentyp

Ein codierender Mismatch- oder Feldtyp inkonsistent kann auch Warnungen verursachen, um sicherzustellen, dass die Datenbank und der Client -Zeichensatz konsistent sind und der Feldtyp korrekt ist.

4. Beispielcode

 &lt;?php
</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-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_errno) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Verbindung ist fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}

</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"INSERT INTO test_table (varchar_column) VALUES ('Dies ist eine Zeichenfolge, die die Feldlängengrenze überschreitet...')"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Ausführung fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
}

</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_warnings</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$warn</span></span><span>) {
    </span><span><span class="hljs-keyword">do</span></span><span> {
        </span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"warnen: Seriennummer %d,Zustand %s,Information %s\n"</span></span><span>, </span><span><span class="hljs-variable">$warn</span></span><span>->errno, </span><span><span class="hljs-variable">$warn</span></span><span>->sqlstate, </span><span><span class="hljs-variable">$warn</span></span><span>->message);
    } </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$warn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">next</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">"没有warnen产生。\n"</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>();
</span><span><span class="hljs-meta">?></span></span><span>

5. Zusammenfassung

Wenn Sie feststellen , dass MySQLi :: get_warnings () keine Warnungen hat, bezweifeln Sie nicht direkt an der API selbst, bestätigen Sie jedoch zunächst, dass die SQL -Anweisung Warnungen enthält, ob das Anrufzeitpunkt und die Methode korrekt sind und ob die Konfiguration der Server- und Client -Umgebung angemessen ist. Schritt-für-Schritt-Fehlerbehebung kann normalerweise das Problem lösen und die gewünschten Warninformationen erhalten.

Ich hoffe, dieser Artikel kann Ihnen helfen , MySQLI :: get_warnings () besser zu verstehen und zu verwenden, um die Debugging -Effizienz von Datenbankvorgängen zu verbessern.