0

файл lib.inc.php

<?php
require "config.inc.php";

function addItemToCatalog( $title, $author, $pubyear, $price){

    $sql = "INSERT INTO catalog (title, author, pubyear, price) VALUES (?, ?, ?, ?,)";
    $stmt = mysqli_prepare($link, $sql);
    if(!$stmt){
        return false;
    }else{
        mysqli_stmt_bind_param($stmt, "ssii", $title, $author, $pubyear, $price);
        mysqli_stmt_execute($stmt);
        mysqli_close($stmt);
        return true;
    }

}

файл save2cat.php

<?php
    // подключение библиотек
    require "secure/session.inc.php";
    require "../inc/lib.inc.php";
    require "../inc/config.inc.php";

    if($_SERVER['REQUEST_METHOD']=='POST'){
        $title = $_POST['title'];
        $author = $_POST['author'];
        $pubyear = $_POST['pubyear'];
        $price = $_POST['price'];
    }else{
        echo "Неудачно отправленно";
    }

    if(!addItemToCatalog( $title, $author, $pubyear, $price)){
        echo 'Произошла ошибка при добавлении товара в корзину';
    }else{
        header("Location: add2cat.php");
        exit;
    }

файл config.inc.php

<?php

const DB_HOST = 'localhost';
const DB_LOGIN = 'root';
const DB_PASSWORD = '';
const DB_NAME = 'eshop';

const ORDER_LOG = 'orders.log';
$basket  = array( );
$count = 0;

$link = mysqli_connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME);
if(!$link){
    echo mysqli_connect_error();
}else{
    echo "Good";
}

уже global $link пробывал и передавал $link как аргумент функции но ошибка остается,соединение с базой происходит успешно. GoodGood Warning: mysqli_prepare() expects parameter 1 to be mysqli, null given in C:\OpenServer\domains\specialist2\eshop\inc\lib.inc.php on line 7 Произошла ошибка при добавлении товара в корзину

  • 1
    У вас отсутствует доступ к $link в скопе функции. 1) Передавайте его параметром. 2) Убедитесь, что на момент вызова функции он действительно не равен null. Других вариантов нет – rjhdby Aug 02 '17 at 06:39
  • На момент вызова функции $link ==object(mysqli), но ошибка не ушла – Maks alekseev Aug 02 '17 at 06:55
  • Вот перед этой строкой $stmt = mysqli_prepare($link, $sql); вставьте var_dump($link); – rjhdby Aug 02 '17 at 07:36
  • Выводит такое : object(mysqli)... – Maks alekseev Aug 02 '17 at 07:43
  • Ну вы же понимаете, что если у вас в первой строке переменная НЕ null, а уже в следующей null, и ни там ни там вы ее не обнуляете - то это из области ненаучной фантастики.Либо вы чего-то не договариваете, либо у вас синтаксическая ошибка в слове $link например. Чудес то не бывает – rjhdby Aug 02 '17 at 08:06
  • перепечатал везде $link заново,но ошибка не пропадает @rjhdby – Maks alekseev Aug 02 '17 at 08:24
  • @Visman спасибо,открыло полную ошибку – Maks alekseev Aug 02 '17 at 20:29

0 Answers0