Итак имею следующий код: PHP: <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> </head> <body> <?php require 'config/db.php'; if(isset($_POST['submit'])){ if($db->connect_errno){/*Проверка на ошибки подлючения к БД*/ $error_text = "<div class=\"error\" id=\"error_connection\">Исключение в функции GenerateCategoryOutput: не удалось подключиться к MySQL: (" . $db->connect_errno . ") " . $db->connect_error . "</div>"; die($error_text); } $category_name = $_POST['category-name']; $subcategory_name = $_POST['subcategory-name']; $subsubcategory_name = $_POST['subsubcategory-name']; $channel_name = $_POST['channel-name']; $channel_description = $_POST['channel-description']; $channel_link = $_POST['channel-link']; /*Подготовка SQL запросов*/ $PRE_category_id = $db->prepare("SELECT `CategoryID` FROM `categories` WHERE `CategoryName` = ?"); $PRE_subcategory_id = $db->prepare("SELECT `SubcategoryID` FROM `subcategories` WHERE `SubcategoryName` = ?"); $PRE_subsubcategory_id = $db->prepare("SELECT `SubsubcategoryID` FROM `subsubcategories` WHERE `SubsubcategoryName` = ?"); $PRE_add_channel = $db->prepare("INSERT INTO `channels`(`CategoryID`, `SubcategoryID`, `ChannelName`, `ChannelLink`, `Description`)VALUES(?, ?, ?, ?, ?)"); $PRE_category_id->bind_param('s', $category_name); $PRE_subcategory_id->bind_param('s', $subcategory_name); $PRE_subsubcategory_id->bind_param('s', $subsubcategory_name); $PRE_category_id->execute(); $PRE_subcategory_id->execute(); $PRE_subsubcategory_id->execute(); $PRE_category_id->bind_result($category_id); $PRE_subcategory_id->bind_result($subcategory_id); $PRE_subsubcategory_id->bind_result($subsubcategory_id); $PRE_category_id->fetch(); $PRE_subcategory_id->fetch(); $PRE_subsubcategory_id->fetch(); $PRE_add_channel->bind_param('iisss', $category_id, $subcategory_id, $channel_name, $channel_link, $channel_description); $PRE_add_channel->execute(); $PRE_add_channel->fetch(); } ?> <form method="POST"> <input type="text" name="category-name" placeholder="Имя категории"> <input type="text" name="subcategory-name" placeholder="Имя подкатегории"> <input type="text" name="subsubcategory-name" placeholder="Имя подподкатегории"> <input type="text" name="channel-name" placeholder="Имя канала"> <input type="text" name="channel-description" placeholder="Описание канала"> <input type="text" name="channel-link" placeholder="Ссылка на канал"> <input type="submit" name="submit" placeholder="Добавить"> </form> </body> </html> По идее он должен добавлять запись в БД, но ничего не работает, вот что пишет в логах: Код (Text): [Thu Jun 07 17:13:23.440583 2018] [php7:warn] [pid 27885] [client 192.168.1.50:1873] PHP Warning: mysqli_stmt::bind_param(): invalid object or resource mysqli_stmt\n in /var/www/html/blbulyandavbulyan.net/addchannel.php on line 41, referer: https://blbulyandavbulyan.net/addchannel.php [Thu Jun 07 17:13:23.440733 2018] [php7:warn] [pid 27885] [client 192.168.1.50:1873] PHP Warning: mysqli_stmt::execute(): invalid object or resource mysqli_stmt\n in /var/www/html/blbulyandavbulyan.net/addchannel.php on line 42, referer: https://blbulyandavbulyan.net/addchannel.php [Thu Jun 07 17:13:23.440773 2018] [php7:warn] [pid 27885] [client 192.168.1.50:1873] PHP Warning: mysqli_stmt::fetch(): invalid object or resource mysqli_stmt\n in /var/www/html/blbulyandavbulyan.net/addchannel.php on line 43, referer: https://blbulyandavbulyan.net/addchannel.php [Thu Jun 07 17:13:31.793500 2018] [php7:warn] [pid 31746] [client 192.168.1.50:1879] PHP Warning: mysqli_stmt::bind_param(): invalid object or resource mysqli_stmt\n in /var/www/html/blbulyandavbulyan.net/addchannel.php on line 41, referer: https://blbulyandavbulyan.net/addchannel.php [Thu Jun 07 17:13:31.793660 2018] [php7:warn] [pid 31746] [client 192.168.1.50:1879] PHP Warning: mysqli_stmt::execute(): invalid object or resource mysqli_stmt\n in /var/www/html/blbulyandavbulyan.net/addchannel.php on line 42, referer: https://blbulyandavbulyan.net/addchannel.php [Thu Jun 07 17:13:31.793701 2018] [php7:warn] [pid 31746] [client 192.168.1.50:1879] PHP Warning: mysqli_stmt::fetch(): invalid object or resource mysqli_stmt\n in /var/www/html/blbulyandavbulyan.net/addchannel.php on line 43, referer: https://blbulyandavbulyan.net/addchannel.php Я прикреплю SQL файл структуры БД, без такой структуры БД скрипт не сможет работать вообще. MySQL 5.7.22 PHP: 7.1.17 Apache: 2.4
Ну вот: PHP: <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> </head> <body> <?php require 'config/db.php'; if(isset($_POST['submit'])){ if($db->connect_errno){/*Проверка на ошибки подлючения к БД*/ $error_text = "<div class=\"error\" id=\"error_connection\">Исключение в функции GenerateCategoryOutput: не удалось подключиться к MySQL: (" . $db->connect_errno . ") " . $db->connect_error . "</div>"; die($error_text); } $category_name = $_POST['category-name']; $subcategory_name = $_POST['subcategory-name']; $subsubcategory_name = $_POST['subsubcategory-name']; $channel_name = $_POST['channel-name']; $channel_description = $_POST['channel-description']; $channel_link = $_POST['channel-link']; /*Подготовка SQL запросов*/ $PRE_category_id = $db->prepare("SELECT `CategoryID` FROM `categories` WHERE `CategoryName` = ?");//sql запрос для получения ИД категории по её имени $PRE_subcategory_id = $db->prepare("SELECT `SubcategoryID` FROM `subcategories` WHERE `SubcategoryName` = ?");//sql запрос для получения ИД подкатегории по её имени $PRE_subsubcategory_id = $db->prepare("SELECT `SubsubcategoryID` FROM `subsubcategories` WHERE `SubsubcategoryName` = ?");//sql запрос для получения ИД подподкатегории по её имени $PRE_add_channel = $db->prepare("INSERT INTO `channels`(`CategoryID`, `SubcategoryID`, `SubsubcategoryID` ,`ChannelName`, `ChannelLink`, `Description`)VALUES(?, ?, ?, ?, ?, ?)");// sql запрос для добавления канала // для добавления канала требуеться знать ИД категории, ИД подкатегории , ИД подподкатегории $PRE_category_id->bind_param('s', $category_name); $PRE_subcategory_id->bind_param('s', $subcategory_name); $PRE_subsubcategory_id->bind_param('s', $subsubcategory_name); $PRE_category_id->execute(); $PRE_subcategory_id->execute(); $PRE_subsubcategory_id->execute(); $PRE_category_id->bind_result($category_id); $PRE_subcategory_id->bind_result($subcategory_id); $PRE_subsubcategory_id->bind_result($subsubcategory_id); $PRE_category_id->fetch(); $PRE_subcategory_id->fetch(); $PRE_subsubcategory_id->fetch(); $PRE_add_channel->bind_param('iisss', $category_id, $subcategory_id, $subsubcategory_id, $channel_name, $channel_link, $channel_description); $PRE_add_channel->execute(); $PRE_add_channel->fetch(); } ?> <form method="POST"> <input type="text" name="category-name" placeholder="Имя категории"> <input type="text" name="subcategory-name" placeholder="Имя подкатегории"> <input type="text" name="subsubcategory-name" placeholder="Имя подподкатегории"> <input type="text" name="channel-name" placeholder="Имя канала"> <input type="text" name="channel-description" placeholder="Описание канала"> <input type="text" name="channel-link" placeholder="Ссылка на канал"> <input type="submit" name="submit" placeholder="Добавить"> </form> </body> </html>
я бы использовал скрипт https://github.com/plohoyav/php_mysql_upros чтобы код смотрелся более компактно