我制作了一个导航栏,用于将菜单存储在我的网页上。
我为它创建了一个名为categories
的表,我设法通过一个按钮为它添加一个类别。我可以添加所有内容,但如果我添加一些东西,我想检查它是否已存在于categories
表中。如果是,那么echo'已经存在'。如果没有,请插入数据。
我无法解决这个问题。谢谢你的帮助。
<?php
function addCategory(){
if(isset($_POST['submit'])){
global $connection;
$cat_title = $_POST['cat_title'];
if($cat_title == "" || empty($cat_title)){
echo "this cannot be blank";
} else {
$query="INSERT INTO categories(cat_title)";// ADD CATEGORIES IN CATEGORIES.PHP //
$query .= "VALUES ('$cat_title')";
$result = mysqli_query($connection,$query);
if(!$result){
die('Query failed' . mysqli_error);
}
}
}
}
?>
答案 0 :(得分:1)
最好的方法有两个步骤。一个人更改了数据库本身,以强制执行cat_title
表中的categories
列永远不会重复的规则。
第一步的文档是here,但阅读这些内容需要大量练习。但是,如果您计划在任何时间内使用MySQL,那么值得习惯它。
对你来说,陈述可能很简单:
CREATE UNIQUE INDEX cat_title_index ON categories (cat_title)
您运行该命令ONCE,它会永久修改您的数据库。您可能拥有可用于完成相同操作的可视化数据库管理工具。
一旦完成,你将永远不会有两个具有相同标题的类别(按标题搜索会更快)。
然后,当您执行上面的代码时,您如何知道插入是否已完成?
事实证明,这也非常简单。 php有a way to check what was inserted - 如果答案为零,则没有任何内容:
$insertId = mysqli_insert_id($connection);
if ($insertId === 0) {
// return "already have that category" message
}
在运行insert语句后放置它,你就可以了。
答案 1 :(得分:0)
创建UNIQUE INDEX cat_title_index ON类别(cat_title)
这使我的问题得以解决:)
答案 2 :(得分:0)
你应该考虑在数据库中创建cat_title UNIQUE然后捕获生成的sql异常
或:
$result = $mysqli->query("SELECT cat_title FROM
categories WHERE category =" +$cat_title);
if($result->num_rows == 0) {
// insert the new category
} else {
echo "category exists ";
}
您可以使用&#39; like&#39;进一步细化查询。而不是等于包含拼写错误的插入类别,并向用户显示要插入或不插入的类别名称。 更好的设计是使一个函数1($ cat_title)检查确切的相等性并返回一个布尔值和第二个函数2($ cat_title)来检查&#39;如%c%&#39;返回一个字符串或null sinse返回的值可以在PHP中用作boolean如果statment和thired function3($ cat_title)要插入然后简单地分别调用3个函数(if ... else if ... else )时尚并在else块中细化它以询问用户 请注意,您可以将函数1和2作为if和else if条件调用并调用else块内的插入函数,并在midle中的if else块内部,提示用户插入或不插入并插入一个终点价值。
由无英语母语人士从移动设备发送...请重新格式化