2011-12-18 3 views
4

와 나는 다음 업데이트 한 : 나는 몇 가지 다른 형태로 동일한 기능을 사용하기 때문에 문제가 query_cust 기능하고 있지 않은지 확인PHP MySQL의 삽입/업데이트 쿼리는 true를 반환하지만 오류

$conn->query_cust("update cms_users set last_login_date = now() where id = " . $_SESSION['USER_INFO']->id); 

해요 잘 작동합니다. 어쨌든, 여기에 (디버그 정보를 원하시면이 var_dumps 포함)의 정의는 다음과 같습니다 저를 걱정 무엇

string(57) "update cms_users set last_login_date = now() where id = 1" bool(true) 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/content/XX/XXXXXXX/html/core/mysql.php on line 26 

이 사실 부울을 (반환입니다 : 실행되면

function query_cust($s='',$rows=false,$organize=true) { 
    var_dump($s); 
    if (!$q=mysql_query($s,$this->con)) return false; 
    if ($rows!==false) $rows = intval($rows); 
    $rez=array(); $count=0; 
    $type = $organize ? MYSQL_NUM : MYSQL_ASSOC; 
    var_dump($q); 
    while (($rows===false || $count<$rows) && $line=mysql_fetch_array($q,$type)) { 
     if ($organize) { 
      foreach ($line as $field_id => $value) { 
       $table = mysql_field_table($q, $field_id); 
       if ($table==='') $table=0; 
       $field = mysql_field_name($q,$field_id); 
       $rez[$count][$table][$field]=$value; 
      } 
     } else { 
      $rez[$count] = $line; 
     } 
     ++$count; 
    } 
    if (!mysql_free_result($q)) return false; 
    return $rez; 
} 

, 내가 말하는 경고 메시지가)하지만 (내가 틀렸다면 나에게 맞춰라) 무시할 수없는 경고가 아니다. 업데이트 쿼리를 수동으로 PHPmyAdmin으로 복사하면 (사용자가 테이블 업데이트/삽입 권한을 가짐) 작동합니다.

동일한 문제가있는 사람을위한 몇 가지 정보 : 로컬에서는 코드 실행이 아무런 문제없이 ('error_reporting = E_ALL'이 설정되어 있어도) 테스트 환경 (Godaddy의 호스팅)에서 실행될 때 경고가 표시됩니다.

추신 : 저는 PHP에 익숙하지 않습니다. (JAVA 세계 출신입니다.) 그래서 답변과 내 바보 하위 질문을 게시하는 동안 자비를 베풀어주십시오. :) 감사합니다.

+1

는 true를 돌려주지해야한다. 리소스를 반환해야합니다. – TimWolla

+0

정말입니까? as on http://php.net/manual/en/function.mysql-query.php "다른 SQL 문, INSERT, UPDATE, DELETE, DROP 등의 경우, mysql_query()는 성공시 TRUE를, 거짓 인 경우에는 TRUE를 반환합니다. 오류." – AlenBer

+0

죄송합니다, 죄송합니다 :) – TimWolla

답변

2

, mysql_query 반환 true를 제공해야합니다. 변경 :

if (!$q=mysql_query($s,$this->con)) return false; 

로는 :

if (!is_resource($q=mysql_query($s,$this->con))) return $q; 
+0

감사합니다. cbuckley :)이 문제가 해결되었습니다. Btw. 나는 온라인 자습서에서 query_cust 함수를 얻었으므로 당신이 방금 도움을 준 유일한 사람은 아니라고 확신한다. :) – AlenBer

2

선택 쿼리가 아닌 업데이트 쿼리를 실행하고 있습니다. 따라서 업데이트가 성공했기 때문에 true를 반환합니다. 그러나 mysql_fetch_array()로 가져올 것은 없습니다. 당신이 뭔가를 선택합니다 쿼리 결과 집합을 반환하지 않는 경우

당신은 선택 쿼리 : the documentation