2014-09-11 3 views
-1

저는이 코드가 월이 아닌지 확인합니다. january는 0 값을 가지며 true 인 경우 업데이트 쿼리를 실행합니다. 정의되지 않은 오프셋 오류 0

그러나 i'am이 오류가

"공지 사항은 : 오프셋 정의되지 않은 : 0"

$value_result = mysql_query("SELECT form_no FROM table_2014 WHERE form_no = '$formnumber'"); 
    while($row = mysql_fetch_assoc($value_result)){ 
     if ($row['january' == '0']){ 
      $sql = "UPDATE `table_2014` SET january = '$contri_amnt' WHERE form_no = '$formnumber'"; 
      if (!mysql_query($sql,$con)) 
      { 
       die('Error: ' . mysql_error()); 
      } 
     } 
     else{ 
      echo "Already contributed!"; 
      } 
    } 
+1

이 있습니다 ** 더 이상 지원 ** mysql_로'에 대해 *'기능, 그들이 [** 공식적으로 사용되지 **] (https://wiki.php.net/rfc/mysql_deprecation), ** 더 이상 유지 **되지 않으며 향후에 ** 제거 될 ** (http://php.net/manual/en/function.mysql-connect.php#warning) 될 것입니다. 앞으로 프로젝트의 기능을 보장하려면 코드를 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/mysqli)로 업데이트해야합니다. – Kermit

답변

5
$row['january' == '0'] 

$row[0]

$row[false]를 반환합니다 난 당신이

$row['january'] == '0' 
-1
을 의미 생각

더 이상 mysql_ * 함수를 사용하면 안됩니다. 그들은 당신이 아무것도 벗어날 필요가 없기 때문에 비난받습니다 + 그들은 안전하지 않습니다. 대신 PDO를 사용하고 진술서를 준비하는 것이 좋습니다.

당신이해야 할 :

$value_result = mysql_query("SELECT form_no FROM table_2014 WHERE form_no = '".(int)$formnumber."'"); 
//guessin that the fields where all integers, since compareing against a "0" 
while($row = mysql_fetch_assoc($value_result)) { 
    if (isset($row['january']) && $row['january'] == '0') { 
     $sql = "UPDATE `table_2014` SET january = '".(int)$contri_amnt."' WHERE form_no = '".(int)$formnumber."'"; 

     if (!mysql_query($sql,$con)) { 
      die('Error: ' . mysql_error()); 
     } 
    } 
    else { 
     echo "Already contributed!"; 
    } 
} 
관련 문제