0

所以问题是 $check 变量始终为 NULL,即使数据库中已经有一条记录与我编写的 SELECT 语句匹配,它仍然为空。我知道这很简单,但我找不到错误。我已经尝试过使用空、isNull、====,但问题是 $check 始终为空。为什么它总是为空?

$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;  

更新我的代码以反映输入,但它仍然接受重复。我的选择语句错了吗?我把 && 放对了,所以它应该扫描所有字段,如果相同的话。

4

3 回答 3

1

那是因为您调用num_rows查询的结果(对于 相同fetch_assoc),而不是数组。

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

请注意,您可以尝试将其预先插入并检查affected_rows- 如果它为零,则由于已经存在而无法插入。请注意,您需要UNIQUE KEY在表格的右侧字段中添加一个。

于 2013-06-24T17:17:25.400 回答
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;  
于 2013-06-24T17:55:43.433 回答
0

如果$results确实包含某些东西......并且查询实际上正在工作,我不知道是否......

你可以试试这个……

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

    if (count($results) > 0):
        //echo "Record already exist";
    else:
于 2013-06-24T17:22:39.327 回答