0

したがって、問題は $check 変数が常に NULL であることです。データベースには、私が記述した SELECT ステートメントに一致するレコードが既に存在するにもかかわらず、まだ null のままです。私はそれが十分に単純であることを知っていますが、エラーを見つけることができません。私はすでに空、isNull、====を使用しようとしましたが、問題は$checkが常に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ステートメントは間違っていますか?. && を正しく配置したので、同じ場合はすべてのフィールドをスキャンすることになっています。

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 に答える