현재 위치: > 최신 기사 목록> 여러 쿼리시 $ errno가 덮어 쓰나요? 올바르게 사용하는 방법?

여러 쿼리시 $ errno가 덮어 쓰나요? 올바르게 사용하는 방법?

M66 2025-05-17

데이터베이스 작업에 PHP를 사용하는 경우 MySQLI 확장자는 쿼리 실행에 대한 기능을 제공합니다. 데이터베이스 연결을 사용하면 여러 SQL 쿼리를 실행할 수 있지만 여러 쿼리를 실행하면 문제가 발생할 수 있습니다 . 다시 말해, 여러 쿼리가 연결을 공유 할 때 매번 오류 코드를 올바르게 얻습니까?

이 게시물에서는 mysqli :: $ errno가 덮어 쓰는 지 여부에 대한 질문에 대해 논의하고 여러 쿼리간에 오류 코드를 올바르게 가져 오는 방법에 대한 솔루션을 제공합니다.

1. mysqli :: $ errno 란 무엇입니까?

mysqli :: $ errnoMySQLI 클래스의 속성으로 마지막 쿼리의 오류 코드를 반환합니다. 오류 코드는 현재 작업의 상태를 나타내는 숫자입니다. 값이 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는 마지막 쿼리의 오류 코드를 반환합니다.

2. 여러 쿼리가 하나의 연결을 공유 할 때 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가 첫 번째 쿼리를 실행 한 후 첫 번째 오류 코드를 반환하지만 두 번째 쿼리를 실행하면 새 오류 코드로 덮어 씁니다. 따라서 마지막 쿼리의 오류 코드 만 볼 수 있으며 각 쿼리의 오류 코드를 직접 가져올 수 없습니다.

3. 매번 오류 코드를 올바르게 얻는 방법은 무엇입니까?

각 쿼리의 오류 코드를 올바르게 얻으려면 각 쿼리가 실행 된 후 현재 오류 코드를 수동으로 저장할 수 있습니다. 변수를 사용하여 각 쿼리의 오류 코드를 기록하여 덮어 쓰는 문제를 피할 수 있습니다.

개선 된 코드는 다음과 같습니다.

 <?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를 사용합니다. 이러한 방식으로 각 쿼리의 오류 코드는 덮어 쓰지 않지만 별도로 기록됩니다.

4. 결론

각 쿼리의 오류 코드를 저장하기 위해 다른 변수를 사용하면 여러 쿼리가 연결을 공유하더라도 오류 코드를 덮어 쓰지 않도록 확인할 수 있습니다. 이 접근법은 오용 및 데이터 손실을 피하여보다 정확한 디버깅 및 쿼리 오류를 처리 할 수 ​​있습니다.

이 기사가 MySQLI :: $ errno 의 사용을 더 잘 이해하고 각 쿼리에 대한 오류 코드를 올바르게 얻을 수있는 솔루션을 제공하는 데 도움이되기를 바랍니다.