2013-06-24 261 views
0

所以問題是$ check變量總是NULL,即使數據庫中已經有一條與我寫的SELECT語句相匹配的記錄,它仍然爲空。我知道這很簡單,但我找不到錯誤。我已經嘗試過使用空,isNull,====,但問題是$ check始終爲空。爲什麼它總是空?查詢總是返回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

我總是看到這種類型的問題,您應該閱讀[PHP和MySQL的通用數據庫調試](http://jason.pureconcepts.net/2013/04/common-debugging-php-mysql /)。 –

+0

你正在使用哪種數據庫擴展,'mysqli'? –

+0

我不喜歡這個字符'在PHP腳本。有時候會導致問題提前給我。 – Fallen

回答

1

這是因爲您在查詢結果上調用num_rows(與fetch_assoc相同),而不是數組。

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

請注意,你可以只嘗試插入它前面,檢查affected_rows - 如果它是零,那麼它faied由於已經存在的接入。請注意,您需要在右側字段的表格中輸入UNIQUE KEY

+0

你好,先生,我試過你的片段。但是這個值仍然是空的。我似乎無法理解這個簡單的聲明:/ –

0

如果$results不INFACT包含的東西....和查詢工作逸岸,我不知道它是否....

你可能只是試試這個,而不是....

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

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

好的,先生,我已經將我的代碼更改爲您,但是接着我截斷了表,因此沒有條目存在,但它告訴我「記錄已存在」,即使沒有記錄。 –

+0

那麼@Kolinks建議應該已經工作了,所以它真的取決於你的查詢規則,然後它的輸出是什麼。 – KyleK

+0

我試過@Kolinks的建議,我把$ var_dump放在$ results和$ check上。然後我運行它。 類型(mysql結果)的資源(4)= $ results的結果 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;