Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果添加了可能的重复条目,如何发出警告消息?_Php_Pdo - Fatal编程技术网

Php 如果添加了可能的重复条目,如何发出警告消息?

Php 如果添加了可能的重复条目,如何发出警告消息?,php,pdo,Php,Pdo,我这里有使用PDO进行插入的代码,插入工作正常。我的问题是,我如何确定我是否在文本框中输入了数据库中已有的记录,在我的数据库中,我有一列ID、Firstname和Lastname,ID是自动递增的,Firstname设置为unique,password设置为varchar..我想做的是,当尝试插入数据库中已有的记录时,我需要一条警告消息,或者可能是一条警告消息,告诉我“该记录已重复”。有人能帮我吗 这是代码 class.php <?php include_once 'dbconfi

我这里有使用PDO进行插入的代码,插入工作正常。我的问题是,我如何确定我是否在文本框中输入了数据库中已有的记录,在我的数据库中,我有一列ID、Firstname和Lastname,ID是自动递增的,Firstname设置为unique,password设置为varchar..我想做的是,当尝试插入数据库中已有的记录时,我需要一条警告消息,或者可能是一条警告消息,告诉我“该记录已重复”。有人能帮我吗

这是代码 class.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>
这里是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部分,您可以过滤错误消息,将正确的消息传递给视图