我想在mySQL数据库中存储name
。当我单击 submit 按钮时,PHP应检查数据库中是否已存在name
。如果是,则不要提交并打印错误消息:
名称已存在于数据库中。
<?php
if ( !empty($_POST)) {
$name = $_POST['name'];
$valid = true;
if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO people (name) values(?) ";
$q = $pdo->prepare($sql);
$q->execute(array($name));
}
}
?>
<form action="form.php" method="post">
<input name="name" type="text" value="<?php echo !empty($name)?$name:'';?>">
<button type="submit" >Submit</button>
</form>
答案 0 :(得分:4)
尝试以下查询来检查mySQL数据库中是否已存在某个值?
$q = $pdo->prepare("SELECT name FROM people WHERE name = :name LIMIT 1");
$q->bindValue(':name', '$name');
$q->execute();
if ($q->rowCount() > 0){
$check = $q->fetch(PDO::FETCH_ASSOC);
$row = $check['name'];
// Do Something If name Already Exist
} else {
// Do Something If name Doesn't Exist
}
答案 1 :(得分:0)
您可以将列声明为unique
并检查查询是否执行,例如:
$query = $pdo->prepare("SELECT name FROM table WHERE name = :name");
$query->bindValue(':name', '$name');
if ($query->execute()){
//no duplicate
}
else {
//error, check the error code.
echo "$stmt->errorCode()";
}
$query-> execute
将在成功时返回true,而在其他方面则为false,当输入在unique
coulmn中时,数据库将返回错误。
我认为在数据库中进行复制检查更安全。