Php 如果添加了可能的重复条目,如何发出警告消息?
我这里有使用PDO进行插入的代码,插入工作正常。我的问题是,我如何确定我是否在文本框中输入了数据库中已有的记录,在我的数据库中,我有一列ID、Firstname和Lastname,ID是自动递增的,Firstname设置为unique,password设置为varchar..我想做的是,当尝试插入数据库中已有的记录时,我需要一条警告消息,或者可能是一条警告消息,告诉我“该记录已重复”。有人能帮我吗 这是代码 class.phpPhp 如果添加了可能的重复条目,如何发出警告消息?,php,pdo,Php,Pdo,我这里有使用PDO进行插入的代码,插入工作正常。我的问题是,我如何确定我是否在文本框中输入了数据库中已有的记录,在我的数据库中,我有一列ID、Firstname和Lastname,ID是自动递增的,Firstname设置为unique,password设置为varchar..我想做的是,当尝试插入数据库中已有的记录时,我需要一条警告消息,或者可能是一条警告消息,告诉我“该记录已重复”。有人能帮我吗 这是代码 class.php <?php include_once 'dbconfi
<?php
include_once 'dbconfig.php';
if(isset($_POST['btn-save']))
{
$username = $_POST['Firstname'];
$password = $_POST['Lastname'];
if($crud->create($Firstname,$Lastname))
{
echo "<script type='text/javascript'>alert('Saved!');</script>";
}
else
{
echo "<script type='text/javascript'>alert('Insertion Failed!'); </script>";
}
}
?>
<form method="POST" class="signin" action="" name="Add" target="iframe">
<fieldset class="textbox">
<label class="username">
<span>Username</span>
<input id="Firstname" name="Firstname" value="" type="text" placeholder="Username" required/>
</label>
<label class="password">
<span>Password</span>
<input id="Lastname" name="Lastname" value="" type="password" Placeholder="Password" required/>
</label>
<br />
<button id="submit" type="submit" name="btn-save">Save</button>
<button id="submit" type="reset" name="reset">Reset</button>
<br />
<br />
<hr>
</fieldset>
</form>
这里是index.php
<?php
include_once 'dbconfig.php';
if(isset($_POST['btn-save']))
{
$username = $_POST['Firstname'];
$password = $_POST['Lastname'];
if($crud->create($Firstname,$Lastname))
{
echo "<script type='text/javascript'>alert('Saved!');</script>";
}
else
{
echo "<script type='text/javascript'>alert('Insertion Failed!'); </script>";
}
}
?>
<form method="POST" class="signin" action="" name="Add" target="iframe">
<fieldset class="textbox">
<label class="username">
<span>Username</span>
<input id="Firstname" name="Firstname" value="" type="text" placeholder="Username" required/>
</label>
<label class="password">
<span>Password</span>
<input id="Lastname" name="Lastname" value="" type="password" Placeholder="Password" required/>
</label>
<br />
<button id="submit" type="submit" name="btn-save">Save</button>
<button id="submit" type="reset" name="reset">Reset</button>
<br />
<br />
<hr>
</fieldset>
</form>
如果在数据库中设置了正确的唯一键,PDO将已经抛出这样的警告/错误。通过插入两次相同的名称,您可以轻松地自己尝试
您应该尝试将代码更改为此,因为这将引发实际错误。要调用的正确函数是
示例代码如下所示:
public function create($username,$password,$province)
{
try
{
$stmt = $this->db->prepare("INSERT INTO login(Firstname,Lastname) VALUES(:Firstname, :Lastname)");
$stmt->bindparam(":Firstname",$Firstname);
$stmt->bindparam(":Lastname",$Lastname);
if (!$stmt->execute())
{
throw new Exception('Could not execute SQL statement: ' . var_export($stmt->errorInfo(), TRUE));
}
return true;
}
catch(Exception $e)
{
// Here you can filter on error messages and display a proper one.
return $e->getMessage();
}
}
在index.php中,将php代码更改为:
if(isset($_POST['btn-save']))
{
$username = $_POST['Firstname'];
$password = $_POST['Lastname'];
$result = $crud->create($Firstname,$Lastname);
if($result === TRUE)
{
echo "<script type='text/javascript'>alert('Saved!');</script>";
}
else
{
echo "<script type='text/javascript'>alert(" . $result . "); </script>";
}
}
if(isset($\u POST['btn-save']))
{
$username=$_POST['Firstname'];
$password=$\u POST['Lastname'];
$result=$crud->create($Firstname,$Lastname);
如果($result==TRUE)
{
回显“警报('已保存!');”;
}
其他的
{
回显“警报(“.$result”);”;
}
}
另一个更好的方法是,在实际插入之前,执行一个单独的选择,查看您试图插入的值是否已经存在。如果您在数据库中设置了正确的唯一键,PDO将已经抛出这样的警告。通过插入两次相同的代码,您可以轻松地自己尝试name@ThomasVdBerge我已经在数据库中正确设置了UNIQUE,但问题是,当我试图保存重复记录时,它只会告诉我“插入失败”,您是否试图将文本从“插入失败”更改为“记录已重复”?@ChrisDekker没有。但是我怎么知道我是否已经在数据库中添加了相同的记录,而没有任何消息告诉我我已经存在重复记录?我已经尝试了你的代码,但仍然无法插入。总是显示..我想我的问题在这段代码中,我想我需要在这里添加一些内容,但我不知道如何。。如果($crud->create($username,$password,$province)){echo“alert('Saved!”);;//header(“Location:add data.php?inserted”);}或者{echo”alert('Insertion Failed!”);;//header(“Location:add data.php?faile”);}那么您手动将代码插入失败放在那里,你想知道为什么会出现这个错误吗?我想我应该做一些SELECT语句,但是我怎么做呢?不。我放了那个警告“插入失败”,让我知道我的插入是否成功。但是我想要另一个警告或警报框,告诉我记录是否已经存在。我稍微更改了代码。在CATCH部分,您可以过滤错误消息,将正确的消息传递给视图