Задать вопрос
galinerik
@galinerik
Новечок

Jquery File Upload к дополнительные поля с базой mysql?

$query->bind_param(
'sisss', $file->name, $file->size, $file->type, $file->title, $file->description, $file->username, $file->usermail


Всем здравствуйте вопрос про jQuery File Upload
Скачал, интегрировал с mysql вот так как написано

Начал помимо title и description добавлять поля в в базе строки тоже добавил и не получается записать в базу. вот код
<?php

$options = array(
    'delete_type' => 'POST',
    'db_host' => 'localhost',
    'db_user' => 'root',
    'db_pass' => '',
    'db_name' => 'uplod2',
    'db_table' => 'files'
);

error_reporting(E_ALL | E_STRICT);
require('UploadHandler.php');

class CustomUploadHandler extends UploadHandler {

    protected function initialize() {
        $this->db = new mysqli(
                $this->options['db_host'], $this->options['db_user'], $this->options['db_pass'], $this->options['db_name']
        );
        parent::initialize();
        $this->db->close();
    }

    protected function handle_form_data($file, $index) {
        $file->title = @$_REQUEST['title'][$index];
        $file->description = @$_REQUEST['description'][$index];
        $file->username = @$_REQUEST['username'][$index];
        $file->usermail = @$_REQUEST['usermail'][$index];
    }

    protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index = null, $content_range = null) {
        $file = parent::handle_file_upload(
                        $uploaded_file, $name, $size, $type, $error, $index, $content_range, $usermail, $username
        );
        if (empty($file->error)) {
            $sql = 'INSERT INTO `' . $this->options['db_table']
                    . '` (`name`, `size`, `type`, `title`, `description`, `username`, `usermail`)'
                    . ' VALUES (?, ?, ?, ?, ?, ?, ?)';
            $query = $this->db->prepare($sql);
            $query->bind_param(
                    'sisss', $file->name, $file->size, $file->type, $file->title, $file->description, $file->username, $file->usermail
            );
            $query->execute();
            $file->id = $this->db->insert_id;
        }
        return $file;
    }

    protected function set_additional_file_properties($file) {
        parent::set_additional_file_properties($file);
        if ($_SERVER['REQUEST_METHOD'] === 'GET') {
            $sql = 'SELECT `id`, `type`, `title`, `description`, `username`, `usermail` FROM `'
                    . $this->options['db_table'] . '` WHERE `name`=?';
            $query = $this->db->prepare($sql);
            $query->bind_param('s', $file->name);
            $query->execute();
            $query->bind_result(
                    $id, $type, $title, $description, $username, $usermail
            );
            while ($query->fetch()) {
                $file->id = $id;
                $file->type = $type;
                $file->title = $title;
                $file->description = $description;
                $file->username = $username;
                $file->usermail = $usermail;
            }
        }
    }

    public function delete($print_response = true) {
        $response = parent::delete(false);
        foreach ($response as $name => $deleted) {
            if ($deleted) {
                $sql = 'DELETE FROM `'
                        . $this->options['db_table'] . '` WHERE `name`=?';
                $query = $this->db->prepare($sql);
                $query->bind_param('s', $name);
                $query->execute();
            }
        }
        return $this->generate_response($response, $print_response);
    }

}

$upload_handler = new CustomUploadHandler($options);
  • Вопрос задан
  • 423 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
В первом аргументе bind_param указано только пять символов для типов, а дальше идут семь переменных.
Смотрите логи, там должна быть ошибка.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
galinerik
@galinerik Автор вопроса
Новечок
вот что в main.js изменено
$(function () {
    'use strict';

    // Initialize the jQuery File Upload widget:
    $('#fileupload').fileupload({
        url: 'server/php/'
    }).on('fileuploadsubmit', function (e, data) {
        data.formData = data.context.find(':input').serializeArray();
    });

добавленно в index.php

<label class="title">
                        <span>Title:</span><br>
                        <input name="title[]" class="form-control">
                    </label>
                    <label class="description">
                        <span>Description:</span><br>
                        <input name="description[]" class="form-control">
                    </label>
<label class="username">
            <span>username</span><br>
            <input name="username[]" class="form-control">
        </label>
        <label class="usermail">
            <span>usermail</span><br>
            <input name="usermail[]" class="form-control">
        </label>

ну вот и база моя 07c6ef5b23c14bb3a3d090db95c12be3.JPG
-- phpMyAdmin SQL Dump
-- version 4.4.15.7
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1:3306
-- Время создания: Окт 01 2016 г., 17:44
-- Версия сервера: 5.7.13
-- Версия PHP: 5.6.23

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- База данных: `uplod2`
--

-- --------------------------------------------------------

--
-- Структура таблицы `files`
--

CREATE TABLE IF NOT EXISTS `files` (
  `id` int(11) unsigned NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `size` int(11) DEFAULT NULL,
  `type` varchar(255) DEFAULT NULL,
  `url` varchar(255) DEFAULT NULL,
  `title` varchar(255) DEFAULT NULL,
  `description` text,
  `username` text,
  `usermail` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `files`
--
ALTER TABLE `files`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `files`
--
ALTER TABLE `files`
  MODIFY `id` int(11) unsigned NOT NULL AUTO_INCREMENT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы