데이터베이스 작업에 PHP를 사용하는 경우 MySQLI 확장자는 쿼리 실행에 대한 기능을 제공합니다. 데이터베이스 연결을 사용하면 여러 SQL 쿼리를 실행할 수 있지만 여러 쿼리를 실행하면 문제가 발생할 수 있습니다 . 다시 말해, 여러 쿼리가 연결을 공유 할 때 매번 오류 코드를 올바르게 얻습니까?
이 게시물에서는 mysqli :: $ errno가 덮어 쓰는 지 여부에 대한 질문에 대해 논의하고 여러 쿼리간에 오류 코드를 올바르게 가져 오는 방법에 대한 솔루션을 제공합니다.
mysqli :: $ errno 는 MySQLI 클래스의 속성으로 마지막 쿼리의 오류 코드를 반환합니다. 오류 코드는 현재 작업의 상태를 나타내는 숫자입니다. 값이 0이면 오류가 발생하지 않았습니다.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$query = "SELECT * FROM non_existent_table";
$mysqli->query($query);
echo "오류 코드: " . $mysqli->errno;
?>
위의 코드에서 $ mysqli-> errno는 마지막 쿼리의 오류 코드를 반환합니다.
동일한 연결에서 여러 쿼리를 실행하면 MySqli :: $ errno가 각 쿼리 후에 새 오류 코드로 업데이트됩니다. 따라서 쿼리 후 $ mysqli-> errno를 호출 한 다음 다음 쿼리를 실행하면 $ mysqli-> errno가 새 오류 코드에 의해 덮어 씁니다.
예를 들어:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$query1 = "SELECT * FROM non_existent_table";
$query2 = "SELECT * FROM another_non_existent_table";
$mysqli->query($query1);
echo "第一个查询오류 코드: " . $mysqli->errno . "<br>";
$mysqli->query($query2);
echo "第二个查询오류 코드: " . $mysqli->errno . "<br>";
?>
위 코드를 실행하면 $ mysqli-> errno가 첫 번째 쿼리를 실행 한 후 첫 번째 오류 코드를 반환하지만 두 번째 쿼리를 실행하면 새 오류 코드로 덮어 씁니다. 따라서 마지막 쿼리의 오류 코드 만 볼 수 있으며 각 쿼리의 오류 코드를 직접 가져올 수 없습니다.
각 쿼리의 오류 코드를 올바르게 얻으려면 각 쿼리가 실행 된 후 현재 오류 코드를 수동으로 저장할 수 있습니다. 변수를 사용하여 각 쿼리의 오류 코드를 기록하여 덮어 쓰는 문제를 피할 수 있습니다.
개선 된 코드는 다음과 같습니다.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$query1 = "SELECT * FROM non_existent_table";
$query2 = "SELECT * FROM another_non_existent_table";
// 첫 번째 쿼리를 실행하십시오
$mysqli->query($query1);
$error_code1 = $mysqli->errno; // 保存第一个查询的오류 코드
echo "第一个查询오류 코드: " . $error_code1 . "<br>";
// 두 번째 쿼리를 실행하십시오
$mysqli->query($query2);
$error_code2 = $mysqli->errno; // 保存第二个查询的오류 코드
echo "第二个查询오류 코드: " . $error_code2 . "<br>";
?>
이 예에서는 각 쿼리의 오류 코드를 저장하기 위해 $ error_code1 및 $ error_code2를 사용합니다. 이러한 방식으로 각 쿼리의 오류 코드는 덮어 쓰지 않지만 별도로 기록됩니다.
각 쿼리의 오류 코드를 저장하기 위해 다른 변수를 사용하면 여러 쿼리가 연결을 공유하더라도 오류 코드를 덮어 쓰지 않도록 확인할 수 있습니다. 이 접근법은 오용 및 데이터 손실을 피하여보다 정확한 디버깅 및 쿼리 오류를 처리 할 수 있습니다.
이 기사가 MySQLI :: $ errno 의 사용을 더 잘 이해하고 각 쿼리에 대한 오류 코드를 올바르게 얻을 수있는 솔루션을 제공하는 데 도움이되기를 바랍니다.