如果记录已经存在或者在PDO MySQL插入查询中不存在,如何生成javascript警报?

时间:2014-09-16 13:22:31

标签: javascript php mysql pdo

我有一个MySQL数据库,我想使用PDO connect从PHP表单插入数据。

有没有办法让Javascript警报弹出;

  1. 记录已存在或
  2. 已添加,因为它不存在
  3. 我正在使用此代码;

    $dbo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         $category = $_REQUEST['category'];
         $sql = "INSERT INTO category (category) SELECT * FROM (SELECT '".$category."') AS tmp WHERE NOT EXISTS (SELECT category FROM category WHERE category = '".$category."') LIMIT 1;";
         $sql = $dbo->prepare($sql);
         $sql ->execute(
            array(
               ':category'=>$category
               )
            );
    

    感谢你帮助一个新手(我找了一个现有的答案,但似乎没什么好看的。)

3 个答案:

答案 0 :(得分:2)

实际上它非常简单。只需通过->rowCount()检查受影响的行:

$sql = "INSERT INTO category (category) SELECT * FROM (SELECT '".$category."') AS tmp WHERE NOT EXISTS (SELECT category FROM category WHERE category = '".$category."') LIMIT 1;";
$stmt = $dbo->prepare($sql);
$stmt->execute(array(':category'=>$category));

if($stmt->rowCount() > 0) {
    // inserted
    echo '<script>alert("Insert Complete!");</script>';
} else {
    // did not insert
    echo '<script>alert("Record already exists!");</script>';
}

根据您的代码现在的设置方式,这是最接近您可以提醒您插入状态的信息。

当然,如果您使用ajax实际请求此插入,您只需使用布尔值进行响应,然后通过ajax的成功块将其呈现在客户端上。

答案 1 :(得分:0)

$dbo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $category = $_REQUEST['category'];
 $sql = "INSERT INTO category (category) SELECT * FROM (SELECT '".$category."') AS tmp WHERE NOT EXISTS (SELECT category FROM category WHERE category = '".$category."') LIMIT 1;";
 $sql = $dbo->prepare($sql);
 try {
 $sql ->execute(
    array(
       ':category'=>$category
       )
    );
 catch(Exception $ex) {
     print_r($ex);
 }

由于您已将字段上的约束添加为唯一,并要求PDO处理异常错误,因此PDO应在尝试插入数据时引发异常(如果数据已在DB中)。 而不是print_r(),您可以echo "alert('My error message');"

答案 2 :(得分:0)

示例,这需要转换为PDO来回答问题。

// $link = mysqli_connect blah blah

function check_exist($link, $cat) {

    $query = "SELECT `category` FROM `category` WHERE `category` = '$cat'";
    $result = mysqli_query($link, $query) or die(mysqli_query($link));

    $row = mysqli_fetch_num($result);

    if(count($row) >= 1) {
        <script>alert('Row already exists!');
    } else {
        insert_record($link, $cat); //fire the insert function
        <script>alert('New record added!');
    }

}

function insert_record($link, $cat) {
    $cat = mysqli_real_escape_string($link, $cat);
    $query = "INSERT INTO `category` (`category`) VALUES ('$category')";
    mysqli_query($link, $query) or die(mysqli_query($link));
}