首页 > 解决方案 > PHP如何检查记录是否存在(PDO)

问题描述

当记录不存在时,我尝试使用以下内容进行插入

$query = $db->query("SELECT * FROM people WHERE first_name = :first_name");
$statement = $db->prepare($query);
$statement->execute();
$count = $statement->fetchColumn();
if ($count === 1)
{
    echo "First name Exist";
}
else
{
    $query = "INSERT INTO people (first_name, last_name) VALUES (:first_name, :last_name)";
    for($count = 0; $count<count($_POST['hidden_first_name']); $count++)
    {
    $data = array(
    ':first_name' => $_POST['hidden_first_name'][$count],
    ':last_name' => $_POST['hidden_last_name'][$count]
    );
    $statement = $db->prepare($query);
    $statement->execute($data);
    }  
}

它仍然插入到重复名字的数据库中。并尝试在此处找到已接受的答案,但我无法使其工作。

标签: phppdo

解决方案


起初,您没有为您的:first_name令牌提供适当的价值

// Let's say value to match = $_POST['first_name']

$query = $db->query("SELECT * FROM people WHERE first_name = :first_name");
$statement = $db->prepare($query);

// Specify value to match in the `execute` call
$statement->execute(array(':first_name' => $_POST['first_name']));

//Now try this to confirm if the result is fetched

if ($statement->fetch())
{
    echo "First name Exist";
}

//else it doesn't exist fetch!
else
{
    $query = "INSERT INTO people (first_name, last_name) VALUES (:first_name, :last_name)";
    $statement = $db->prepare($query);
    for($count = 0; $count<count($_POST['hidden_first_name']); $count++)
    {
    $data = array(
    ':first_name' => $_POST['hidden_first_name'][$count],
    ':last_name' => $_POST['hidden_last_name'][$count]
    );
    $statement->execute($data);
    }  
}

推荐阅读