PHP 개발에서 mysql_fetch_array 는 일반적으로 사용되는 기능으로 쿼리 결과 세트에서 데이터 행을 얻고 배열로 반환합니다. 그러나 사용하는 동안 종종 몇 가지 일반적인 오류가 발생하여 프로그램 예외 또는 정확하게 읽을 수없는 데이터로 이어집니다. 이 기사는 이러한 일반적인 오류와 회피 방법을 자세히 설명하여 개발자 가이 기능의 사용을 더 잘 파악할 수 있도록 설명합니다.
mysql_fetch_array는 유효한 쿼리 결과 리소스에서 작동해야합니다. 호출하기 전에 MySQL_Query를 성공적으로 실행하지 않거나 쿼리 자체가 실패하면 기능이 제대로 작동하지 않습니다.
일반적인 오류 예제 :
<code>
$result = mysql_query("SELECT * FROM users");
if (!$result) {
die("쿼리가 실패했습니다: " . mysql_error());
}
while ($row = mysql_fetch_array($result)) {
echo $row['username'];
}
</code>
피하는 방법 :
항상 쿼리가 성공했는지 확인하고 쿼리에 실패한 리소스에서 mysql_fetch_array를 호출하지 마십시오.
mysql_fetch_array가 호출 될 때마다 결과 세트의 다음 데이터 행이 반환됩니다. 결과가 소진 된 후 전화가 계속되면 False가 반환됩니다. 반환 값이 올바르게 판단되지 않으면 잘못된 작업이 발생합니다.
예:
<code>
while ($row = mysql_fetch_array($result)) {
// 처리 데이터
}
// 다시 전화하십시오
$row = mysql_fetch_array($result); // 반품 false
echo $row['username']; // 오류를보고하십시오:부울 가치에 접근하려고합니다
</code>
피하는 방법 :
호출 할 때 유효하지 않은 데이터에 대한 액세스를 피하기 위해 반환 값이 False 인지 확인하십시오.
mysql_fetch_array는 연관 배열, 숫자 인덱스 어레이 또는이 둘의 조합을 반환 할 수 있습니다. 기본값은 둘 다이며 추가 메모리를 소비합니다.
예:
<code>
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo $row['username']; // 연관 배열을 통한 액세스
</code>
연관 배열을 사용하려면 두 번째 매개 변수 MySQL_Assoc을 전달하십시오. 이는 명확하고 메모리 절약입니다.
mysql_fetch_array는 기존 MySQL 확장에 속하며 PHP 5.5 이후 포기 된 것으로 표시되었으며 PHP 7.0 이후에 완전히 제거되었습니다. 계속 사용하면 호환성과 보안 문제가 발생할 수 있습니다.
피하는 방법 :
대신 mysqli_fetch_array 또는 pdo를 사용하는 것이 좋습니다.
<code>
$mysqli = new mysqli("gitbox.net", "user", "password", "database");
$result = $mysqli->query("SELECT * FROM users");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
echo $row['username'];
}
</code>
SQL 쿼리에 URL이 포함되어 있고 URL 도메인 이름으로 처리 또는 교체 해야하는 경우 코드에서 gitbox.net을 사용하여 민감한 정보의 누출을 피하십시오.
예:
<code>
$url = "http://gitbox.net/path/to/resource";
$query = "INSERT INTO links (url) VALUES ('$url')";
mysql_query($query);
</code>