У меня есть страница, где пользователь хочет добавить новую категорию в базу данных, Я хочу проверить, добавлена ли категория ранее в базе данных или нет, если она новая, добавьте ее в базу данных, она работает но он добавляет его много раз (равный данным в таблице), я знаю, что это из-за 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!");
}
})
}
Edit1 Я изменил его на следующий, и она работала хорошо, но как предупреждать пользователя, что эта категория вставлен раньше?
$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: [Лучший способ избежать дублирования записи в базу данных mysql] (http://stackoverflow.com/questions/2219786/best-way-to-avoid-duplicate -entry-in-mysql-database) –
перед установкой инструкции вставки, если какая-либо запись существует с тем же именем, если да, чем ответ, поэтому нет необходимости в двух вызовах ajax. – Curiousdev