Недавно начал учить PHP. Скачал курс Специалист. Делаю все как по урокам и тут застопорился. Не вижу в чем ошибка где проблема! Просидел пару часов и так и не понял. Подскажите. По теме. Не получается сделать запись в БД. Код (PHP): <?php $title = $_POST[title]; $author = $_POST[author]; $pubyear = $_POST[pubyear]; $price = $_POST[price]; function addItemToCatalog ($title, $author, $pubyear, $price){ define ("DB_HOST","localhost"); define ("DB_LOGIN","root"); define ("DB_PASSWORD",""); define ("DB_NAME","eshop"); define ("DB_","orders.log"); $link = mysqli_connect(DB_HOST,DB_LOGIN,DB_PASSWORD,DB_NAME); $sql = mysqli_query("INSERT INTO catalog (title, author, pubyear, price) VALUE ($title, $author, $pubyear, $price)"); if (!$stmt = mysqli_prepare($link, $sql)) return false; mysqli_stmt_bind_param($stmt, "ssii", $title, $author,$pubyear, $price); mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); return true; } if(!addItemToCatalog($title, $author, $pubyear, $price)){ echo 'Произошла ошибка при добавлении товара в каталог'; }else{ header("Location: add2cat.php"); exit; }
ты выполняешь запрос в котором строчные значения не выделены как строчные. добавь вокруг них апострофы.
Код (PHP): "INSERT INTO catalog (`title`, `author`, `pubyear`, `price`) VALUE ('$title', '$author', '$pubyear', '$price')"
Код (PHP): $sql = mysqli_query mysqli_prepare($link, $sql Что это вообще такое? Перечитай https://php.net/manual/ru/mysqli.prepare.php Второй аргумент mysqli_prepare ожидает строку, а ты пихаешь объект mysqli_result или FALSE от mysqli_query.
Спасибо что указали на ошибки и помогли. В конечном итоге все получилось! Код (PHP): <?php // подключение библиотек require "secure/session.inc.php"; require "../inc/lib.inc.php"; require "../inc/config.inc.php"; $title = $_POST['title']; $author = $_POST['author']; $pubyear = $_POST['pubyear']; $price = $_POST['price']; function addItemToCatalog ($title, $author, $pubyear, $price){ define ('DB_HOST','localhost'); define ('DB_LOGIN','root'); define ('DB_PASSWORD',''); define ('DB_NAME','eshop'); define ('ORDER_LOG','orders.log'); $link = mysqli_connect(DB_HOST,DB_LOGIN,DB_PASSWORD,DB_NAME)or die (mysqli_connect_error()); $sql = "INSERT INTO catalog (title, author, pubyear, price) VALUES (?, ?, ?, ?)"; if (!$stmt = mysqli_prepare($link, $sql)) return false; mysqli_stmt_bind_param($stmt, "ssii", $title, $author,$pubyear, $price); mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); return true; } if(!addItemToCatalog($title, $author, $pubyear, $price)){ echo 'Произошла ошибка при добавлении товара в каталог'; }else{ header("Location: add2cat.php"); exit; }
denis01, не ругай новичком =) Бывает столько дефине нельзя если помню что повтор дефине вызавет ошибка!