【发布时间】:2017-06-19 13:27:00
【问题描述】:
我有一个页面,用户想要在其中向数据库添加新类别,
我想检查该类别是否已经添加到数据库中,如果是新的,将其添加到数据库中,它工作正常,但它添加了很多次(等于表中的数据)我知道是因为foreach,怎么办?还有如何提醒用户它已经存在?
php代码:
<?php
include_once "connect.php";
$stmt ="SELECT distinct Category_Name FROM Categories";
foreach ($conn->query($stmt) as $row)
{
if ($row['Category_Name'] != $_POST["CatName"])
{
$sql ="INSERT INTO Categories (Category_Name) VALUES (:CatName)";
$result=$conn->prepare($sql);
$result->bindparam(':CatName', $_POST["CatName"], PDO::PARAM_INT);
$result->execute();
}
else
{
return false;
}
}
?>
Javascript 代码:
function AddNewCategory()
{
var CatName=document.getElementById("CatNametxt").value;
$.ajax({
type:"POST",
url:"add_category.php",
data:'CatName=' + CatName,
success: function(data)
{
alert("Category Added Successfully!");
}
})
}
编辑1 我把它改成了下面的,它工作得很好,但是如何提醒用户之前插入了这个类别?
$stmt ="SELECT * FROM Categories WHERE Category_Name='".$_POST["CatName"]."'";
$queryresult = $conn->query($stmt)->fetchAll(PDO::FETCH_ASSOC);
if (count($queryresult) == 0)
{
$sql ="INSERT INTO Categories (Category_Name) VALUES (:CatName)";
$result=$conn->prepare($sql);
$result->bindparam(':CatName', $_POST["CatName"], PDO::PARAM_INT);
$result->execute();
}
【问题讨论】:
-
请为您使用的特定数据库添加标签,如果是MySQL:Best way to avoid duplicate entry into mysql database
-
在插入语句之前检查是否存在同名的记录,如果是,则相应地做出响应,不需要两次ajax调用
标签: javascript php sql ajax pdo