Как сделать общую функцию на удаление из разных таблиц на php?
У меня есть множество таблиц. И когда мне нужно удалить какую-нибудь запись, я использую для каждой таблицы свой, но почти одинаковый код. Я пыталась написать общую функцию, с передачей параметров через переменные, но оно никак не работает. А найти что-то подобное я не могу в интернете. Может гуглю не так... Вот такая функция:
<?php
function delete($id, $table, $place)
{
require_once('../connect.php');
// $id = $_GET['id'];
// $mysqli->query("DELETE FROM $table WHERE id = $id");
$stmt = $mysqli->prepare("DELETE FROM ".$table." WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
header ("Location: ../$place.php");
}
?>
Вот вызов этой функции и подключение файла:
require_once('moderator/delete_function.php');
delete($id, "fandoms", "fandoms");
Хотя вот этот вариант работает хорошо с конкретными значениями без переменных.
require_once '../connect.php';
$id = $_GET['id'];
$stmt = $mysqli->prepare("DELETE FROM fandoms WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
// require_once('delete_function.php');
// delete($id, 'fandoms', 'fandoms');
header ('Location: ../fandoms.php');
Ответы (2 шт):
Автор решения: Nowhere Man
→ Ссылка
Похоже, что у вас опечатка в запросе, где подставляется $id вместо ? для параметра:
$stmt = $mysqli->prepare("DELETE FROM ".$table." WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
Автор решения: Андроид
→ Ссылка
Оо, у меня заработало!
я заменила require_once на require и все встало на свои места.
код пока такой:
<?php
//delete_funtion.php
function delete_zz(int $id, string $table, string $place)
{
require'../connect.php';
// $id = $_GET['id'];
// $mysqli->query("DELETE FROM $table WHERE id = $id");
$stmt = $mysqli->prepare("DELETE FROM ".$table." WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
// $stmt = $mysqli->prepare("DELETE FROM ? WHERE id = ?");
// $stmt->bind_param("si", $table, $id);
// $stmt->execute();
header ("Location: ../$place.php");
}
?>
Это кнопка удаления в другом файле
<a class="moder_button" href="moderator/delete_fandom.php?id=<?=$info_fandoms['id'] ?>">Удалить</a>
<?php
// delete_fandom.php
require_once '../connect.php';
$id = $_GET['id'];
require_once('delete_function.php');
delete_zz($id, 'fandoms', 'fandoms');
header ('Location: ../fandoms.php');
?>