2013-06-24 94 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;