我做了一个导航栏,我将菜单存储在我的网页上。
我为它创建了一个名为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);
}
}
}
}
?>
最好的方法有两个步骤。一个更改数据库本身以强制执行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语句后把它放好,你就可以了。
CREATE UNIQUE INDEX cat_title_index ON类别(cat_title)
这使我的问题解决了:)
您应该考虑在数据库中创建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 ";
}
您可以通过使用“like”而不是等于包含拼写错误的插入类别来进一步细化查询,并向用户显示要插入或不插入的类别名称。一个更好的设计是使一个function1($ cat_title)检查确切的相等并返回一个布尔值和第二个function2($ cat_title)来检查'like%c%'返回一个字符串或null sinse返回的值可以是如果将statment和thired function3($ cat_title)插入然后简单地在一个(if ... else if else)方式中调用3个函数并在else块中对其进行细化以询问,则在PHP中用作布尔值用户注意,您可以将函数1和2作为if和else if条件调用并调用else块内的插入函数,并在midle中的if else块内部,提示用户插入或不插入并设置一个终点插入值。
由非英语母语人士从移动设备发送...请重新格式化