我开始学习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();
}
}
}
我需要你的帮助,因为它不会检查或插入!
答案 0 :(得分:0)
当您的伪已存在时,可能会出现此问题。
这导致您的SELECT不返回任何结果。如果没有结果,则永远不会输入while块,因为$data = $sel->fetch(PDO::FETCH_ASSOC)
会返回null
,false
会投放到count
。
无论如何,你实际上不必迭代结果。
只需使用count
检查您是否有结果。否则,没有任何内容与您的查询匹配,因此您的数据库中没有该伪,您可以执行插入操作。
阅读Mysqli文档以了解如何使用{{1}}:php.net/manual/en/book.mysqli.php