如果pseudo不存在则插入

时间:2014-05-06 07:06:00

标签: php mysql

我开始学习PHP和mysql。我想检查我的数据库中是否已存在伪。如果是,不要做任何事情,如果不插入。 这是我使用的代码:

if (isset( $_POST['pseudo'])) {

    $sel = $bdd -> prepare('SELECT pseudo FROM ajax WHERE pseudo = :pseudo');
    $sel -> bindParam(':pseudo', $_POST['pseudo'], PDO::PARAM_STR);
    $sel->execute();
    while ( $data = $sel->fetch(PDO::FETCH_ASSOC)) {
        if ( $data['pseudo'] == $_POST['pseudo'] ) {
            echo 'This pseudo already exist, please change it';
        } else {
            $insert = $bdd -> prepare('INSERT INTO ajax(id, nom, prenom, pseudo) VALUES(NULL, :nom, :prenom, :pseudo)');
            $insert->bindParam(':nom', $_POST['nom']);
            $insert->bindParam(':prenom', $_POST['prenom']);
            $insert->bindParam(':pseudo', $_POST['pseudo']);
            $insert->execute(); 
        }
    }
}

我需要你的帮助,因为它不会检查或插入!

1 个答案:

答案 0 :(得分:0)

当您的伪已存在时,可能会出现此问题。 这导致您的SELECT不返回任何结果。如果没有结果,则永远不会输入while块,因为$data = $sel->fetch(PDO::FETCH_ASSOC)会返回nullfalse会投放到count

无论如何,你实际上不必迭代结果。

只需使用count检查您是否有结果。否则,没有任何内容与您的查询匹配,因此您的数据库中没有该伪,您可以执行插入操作。

阅读Mysqli文档以了解如何使用{{1}}:php.net/manual/en/book.mysqli.php