Я создал навигационную панель, где храню свои меню на своей веб-странице.
Я создал таблицу для нее под названием categories
, и мне удалось добавить к ней категорию с помощью кнопки. Я могу добавить к нему все, но если я что-то добавлю к нему, я хочу проверить, существует ли он в таблице categories
. Если это так, то эхо "уже существует". Если нет, вставьте данные.
Я не могу это решить. Спасибо за помощь.
<?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);
}
}
}
}
?>
CREATE UNIQUE INDEX cat_title_index Включить категории (cat_title)
Это решило мою проблему :)
Лучший способ сделать это - несколько шагов. Один из них изменяет базу данных, чтобы обеспечить соблюдение правила, cat_title
столбец cat_title
в таблице categories
никогда не имеет дубликата.
Документация для первого шага находится здесь, но для чтения этого материала требуется много практики. Это стоит привыкнуть к этому, хотя, если вы планируете использовать MySQL на какое-то время.
Для вас утверждение, вероятно, так же просто, как:
CREATE UNIQUE INDEX cat_title_index ON categories (cat_title)
Вы запускаете эту команду ONCE, и она постоянно изменяет вашу базу данных. У вас может быть визуальный инструмент администрирования базы данных, который вы можете использовать для достижения того же самого.
Как только это будет сделано, у вас никогда не будет двух категорий с одинаковым названием (и поиск по названию будет быстрее).
Затем, когда вы выполняете свой код выше, откуда вы знаете, была ли сделана вставка?
Оказывается, это тоже довольно легко. php имеет возможность проверить, что было вставлено - если ответ равен нулю, тогда ничего не было:
$insertId = mysqli_insert_id($connection);
if ($insertId === 0) {
// return "already have that category" message
}
Поместите это после того, как вы запустите инструкцию для вставки, и вам хорошо идти.
вам следует подумать о том, чтобы сделать 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" вместо равного, включая включенные вставляемые категории с ошибками, и покажите пользователю имя категории, которое требуется для вставки или нет. лучший дизайн - сделать функцию1 ($ cat_title), чтобы проверить точное равенство и вернуть логическую и вторую функцию2 ($ cat_title), чтобы проверить с помощью "like% c%", которая возвращает строку или null sinse, возвращаемое значение может быть используется как boolean в PHP, если statment и thired function3 ($ cat_title) для вставки, а затем просто вызывают 3 функции соответственно в модуле (if... else if... else) и уточняют его в блоке else, чтобы задать обратите внимание на то, что вы можете вызывать функции 1 и 2 как условия if и else if и вызывать функцию вставки внутри блока else и внутри блока if else в midle, который вы предложили бы пользователю вставить или нет, и сделать конечную точку вставьте значение.
отправлено с мобильного устройства ни одним носителем английского языка... пожалуйста, переформатируйте