2013-06-24 8 views
0

그래서 $ CHECK 변수는 항상 NULL입니다. 데이터베이스에 이미 작성한 SELECT 문과 일치하는 레코드가 있지만 여전히 null입니다. 나는 그것이 충분히 간단하다는 것을 알지만 나는 그 오류를 발견 할 수 없다. 이미 빈, isNull, ====를 사용하여 시도했지만 문제는 $ check가 항상 null이라는 것입니다. 왜 항상 null입니까?쿼리는 항상 NULL을 반환합니다.

$sql = "SELECT * FROM linkedin_lookup WHERE " 
       ."`given-name`='{$table['given_name']}' && " 
       ."`family-name`='{$table['family_name']}' && " 
       ."`location`='{$table['location']}' && " 
       ."`industry`='{$table['industry']}' && " 
       ."`headline`='{$table['headline']}'"; 
     $results = $db->query($sql); 
     $check = $results->num_rows; 
     if ($check): 
      echo "Record already exist"; 
     else: 
      $sql = "INSERT INTO linkedin_lookup (`given-name`,`family-name`,`location`,`industry`,`headline`,`date_search`) " 
      ."VALUES " 
      ."('{$table['given_name']}'," 
      ."'{$table['family_name']}'," 
      ."'{$table['location']}'," 
      ."'{$table['industry']}'," 
      ."'{$table['headline']}'," 
      ."'{$now}')"; 
      $db->query($sql); 
      echo "Succesfully inserted record(s)" . '<br />'; 
     endif; 

입력란을 리플로킹 할 때까지 코드를 업데이트하지만 여전히 사본을 허용합니다. 내 SELECT 문이 잘못 되었습니까? 나는 & &을 넣었으므로, 모든 필드를 스캔하면된다.

+2

내가 질문이 유형의 모든 시간을 볼 수 있습니다 (http://jason.pureconcepts.net/2013/04/common-debugging-php-mysql [PHP와 MySQL에 대한 일반적인 데이터베이스 디버깅]을 읽어야합니다 /). –

+0

어떤 mysql 확장자를 사용하고 있습니까? –

+0

나는 php 스크립트에서이 문자를 좋아하지 않는다. 때로는 문제가 더 일찍 발생했습니다. – Fallen

답변

1

쿼리의 결과 (fetch_assoc과 동일)가 아니기 때문에 num_rows이라고 부르기 때문입니다. 이 제로라면 그때는 이미 존재로 인해 삽입 설정하지 못했습니다 - 당신은 단지 앞을 그것을 삽입하려고 affected_rows을 확인할 수 있습니다

$results = $db->query($sql); 
$check = $results->num_rows; 
if($check) { 
    echo "Record already exists"; 
} 
else { 
    $sql = "INSERT....."; 
} 

참고. 오른쪽 입력란에 표에 UNIQUE KEY이 필요합니다. ....

당신은 단지 대신을 시도 할 수 있었다 ....

+0

안녕하세요, 귀하의 스 니펫을 시험해 보았습니다. 그러나 값은 여전히 ​​null입니다. 이 간단한 문장을 이해할 수없는 것 같습니다 :/ –

0

하면 $results는 .... 뭔가를 가리키고 포함 않고 쿼리는 내가 경우 몰라 가리키고 작업입니다

$db->query($sql); 
    $results = $db->fetch_assoc(); 

    if (count($results) > 0): 
     //echo "Record already exist"; 
    else: 
+0

알겠습니다, 내 코드를 변경했는데 테이블이 잘려서 테이블이 잘리지 않아도 "레코드가 이미 있습니다"라는 메시지가 표시됩니다. 기록이 없습니다. –

+0

글쎄 @Kolinks 제안, 그래서 정말 귀하의 쿼리 calss에 따라 달라집니다, 그리고 그 결과에 따라 달라집니다 .... – KyleK

+0

나는 $ 결과 및 $ 확인에 var_dump 넣어 @ Kolinks의 제안을 시도. 그럼 나는 그것을 실행합니다. 리소스 유형 (mysql result) = $ 결과 결과 NULL = $ check 결과 –

0

이제는 작동합니다. 우리가 회사에서 개발 한 프레임 워크를 사용하고 있기 때문에 클래스 $ db가 mysqli가 아닌 것 같습니다. 그래서 지금 내 코드는 다음과 같습니다.

$sql = "SELECT * FROM linkedin_lookup WHERE " 
      ."`given-name`='{$table['given_name']}' && " 
      ."`family-name`='{$table['family_name']}' && " 
      ."`location`='{$table['location']}' && " 
      ."`industry`='{$table['industry']}' && " 
      ."`headline`='{$table['headline']}'"; 
    $db->query($sql); 
    $check = $db->fetch_array(); 
    if ($check): 
     echo "Record already exist"; 
    else: 
     $sql = "INSERT INTO linkedin_lookup (`given-name`,`family-name`,`location`,`industry`,`headline`,`date_search`) " 
     ."VALUES " 
     ."('{$table['given_name']}'," 
     ."'{$table['family_name']}'," 
     ."'{$table['location']}'," 
     ."'{$table['industry']}'," 
     ."'{$table['headline']}'," 
     ."'{$now}')"; 
     $db->query($sql); 
     echo "Succesfully inserted record(s)" . '<br />'; 
    endif; 
관련 문제