如何检查mySQL数据库中是否已存在某个值?

时间:2015-07-14 13:38:22

标签: php mysql sql

我想在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>

2 个答案:

答案 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中时,数据库将返回错误。 我认为在数据库中进行复制检查更安全。