상당수의 데이터베이스 쿼리가 포함 된 페이지가 있으며 각 페이지에는 or die()
이 추가됩니다. 테스트를 위해 1 초마다이 페이지를로드하고 무작위 페이지로드시 (두 개가 걸리거나 5 또는 10이 걸릴 수 있음) die()
이 전환되고 오류가 발생했습니다.mysql_fetch_assoc()이 죽어 랜덤 페이지로드시 오류가 발생합니까?
나는 스크립트를 고장하고있는 특정 잘못된 쿼리, 분리 관리 :
if($size > 0) {
$off_id = array();
while($row = mysql_fetch_assoc($result)) {
$off_id[] = $row['off_id'];
}
echo '<pre>';
var_dump($off_id);
echo '</pre>';
$rand = rand(0,$size);
$off_id = $off_id[$rand];
$query = "UPDATE rotation_data SET hit_counter = hit_counter + 1 WHERE off_id = '{$off_id}'";
$result = mysql_query($query) or die("Error 1:" . mysql_error());
$query = "SELECT * FROM offer_data WHERE off_id = '{$off_id}'";
$result = mysql_query($query) or die("Error 2:" . mysql_error());
$fetch = mysql_fetch_assoc($result) or die("Error 3:" . mysql_error());
$offer_url = $fetch['url']; $geo_target = $fetch['geo_target']; $blank = $fetch['blank'];
}
것 I :
$fetch = mysql_fetch_assoc($result) or die("Error 3:" . mysql_error());
이 특정 라인에 포함됩니다 눈치 :
- 아니요
mysql_error()
이 반환/인쇄됩니다.Error 3:
만 있습니다. - 는
$off_id
배열은 제대로 각각의 모든 시간을 덤프, 그래서 거기에 항상 이전$result
쿼리에서 사용하는$off_id
, 그리고이 아니었다면, 그 대신$result
쿼리에 대한die()
을 트리거한다.
이것은 임의의 페이지로드시 발생하는 이유와 모든 시간이 아닌 이유를 이해하지 못합니다.이 문제는 구문 문제가 아니라로드 문제 일 수 있습니다.
그러나로드 문제 일지라도 그 특정 쿼리가 실패하고 다른 쿼리가 실행되는 동안 die()
이 트리거되는 이유를 알 수 없습니다.
이 문제의 원인을 이해하는 데 도움이되는 정보와 해결 방법에 대한 의견을 보내 주시면 대단히 감사하겠습니다.
['또는 die()'해야합니다] (http://www.phpfreaks.com/blog/or-die-must-die). 또한 문 오류 때문에 mysql_error ($ result)를 사용하십시오. – Phil
mysql을 더 이상 사용하지 말고 mysqli 또는 PDO를 사용하십시오. http://www.php.net/manual/en/intro.mysqli.php –
제안을위한 소품 @Phil. – Avicinnian