Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128

Не срабатывает подготовленный запрос PHP 7

14.03.2020, 19:20. Показов 507. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начал теребить старый сайт, который был написан когда стоял php 5.6. Но с 7 версией возникли проблемы.

Есть страница загрузки изображений. С помощью ajax передаются данные в файл обработчик. Который загружает фото на сервер и возвращает имя файла. Имя файла нужно записать в базу данных. Но ничего не получается. В базу ничего не добавляется.

На 5.6 все отлично работало, помогите разобраться в чем дело...

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Загрузка изображений
if (isset($_POST['action']) && $_POST['action'] == 'upload-photo') {
    
    ############ Configuration ##############
    $path_upload                            = ROOT_DIR . '/uploads/pet/img/big/';
    $path_thumbnail                         = ROOT_DIR . '/uploads/pet/img/thumb/';
    $config["generate_image_file"]          = true; //Включаем создание изображения
    $config["generate_thumbnails"]          = true; //Включаем создание миниатюры
    $config["image_max_size"]               = 1100; //Maximum image size (height and width)
    $config["thumbnail_size"]               = 331; //Thumbnails will be cropped to 200x200 pixels
    $config["thumbnail_size_height"]        = 221; //
    $config["thumbnail_prefix"]             = 'thumb_'; //Normal thumb Prefix
    $config["destination_folder"]           = $path_upload; //upload directory ends with / (slash)
    $config["thumbnail_destination_folder"] = $path_thumbnail; //upload directory ends with / (slash)
    $config["upload_url_thumb"]             = SITE . '/uploads/pet/img/thumb/'; //путь до маленького изображения
    $config["upload_url_big"]               = SITE . '/uploads/pet/img/big/'; //путь до большого изображения
    $config["quality"]                      = 90; //jpeg quality
    $config["random_file_name"]             = true; //randomize each file name
    
    
    if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
        exit; //try detect AJAX request, simply exist if no Ajax
    }
    
    #Присваиваем переменную загруженного файла
    $config["file_data"] = $_FILES["photo"];
    
    #Подключаем класс 
    include('resize.class.photo.php');
    
    #Создаем класс 
    $im = new ImageResize($config);
    
    try {
        $responses = $im->resize(); //инициируем изменение размера изображения
    # запрос
    $query = "INSERT INTO `photo` (thumb, full_photo, parent_id) VALUES (?, ?, '$pet_id')";
    
        # Вывод миниатюры
        foreach ($responses["thumbs"] as $resp) {
            $thumb    = $resp; # кладем в переменную ссылку на тумбу
            $full_img = mb_substr($resp, 6); # кладем в переменную ссылку на изображения
            
        # создаем подготавливаемый запрос
        if ($stmt = mysqli_prepare($CONNECT, $query)) {
        # связываем параметры с метками
        mysqli_stmt_bind_param($stmt, 'ss', $thumb, $full_img);
            # выполнение подготовленного запроса
            mysqli_stmt_execute($stmt);
        # закрываем подготовленного выражения
            mysqli_stmt_close($stmt);
        }
            
            # получаем id последнего обращения к базе и присваиваем этот id фото
            $id_photo_add = mysqli_insert_id($CONNECT);
            
            $html = '<div id="p-' . $id_photo_add . '" onmouseout="$(this).removeClass(\'hoversel\');" onmouseover="$(this).addClass(\'hoversel\');" class="photo_block"><span class="p180" style="background-image: url(\'' . $config["upload_url_thumb"] . $resp . '\');"></span><div class="photo_menu"><em><a id="m-' . $id_photo_add . '" class="photo_main" title="Сделать главной" href="#" onclick="photo_set_main(' . $id_photo_add . ',' . $pet_id .'); return false;"><b></b></a><a id="e-' . $id_photo_add . '" class="photo_edit" href="#" title="Редактировать фото"><b></b></a><a id="s-' . $id_photo_add . '" class="photo_slider" href="#" onclick="photo_slider_on(' . $id_photo_add . '); return false;" title="Добавить в слайдер"><b></b></a><a class="photo_open" data-fancybox="gallery" href="' . $config["upload_url_big"] . $full_img . '" title="Открыть фото"><b></b></a><a id="d-' . $id_photo_add . '" class="photo_del" href="#" onclick="photo_delete(' . $id_photo_add . ', \'' . $full_img . '\'); return false;" title="Удалить фото"><b></b></a></em></div><div class="phhov"></div></div>';
            
        $html2 .= $html; //Склеиваем миниатюры в одну переменную           
        }
 
        # Передаем в Json
        $response = array(
            'html' => $html2,
            'status' => 'success',
            'success' => 'Фотография добавлена',
        );
        echo json_encode($response);
        
    }
    catch (Exception $e) {
        $response = array(
            'error' => $e->getMessage(),
            'status' => 'bad'
        );
        echo json_encode($response);
    }   
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2020, 19:20
Ответы с готовыми решениями:

В подготовленный запрос SELECT с условием IN не передается переменная из сессии
Здравствуйте. приехал. класс Db: ... public function selectFetchAll($sql, $params = ) { $stmt =...

Как перезаписать данные из json в базу через подготовленный запрос?
как перезаписать данные из json в базу через подготовленный запрос? $msg = file_get_contents(&quot;php://input&quot;); $data =...

Почему срабатывает код php, если он идет раньше, чем POST запрос html формы?
Приветствую всех! Имеется код, который чудесно работает: &lt;? if(isset($_POST)){ $name = trim(strip_tags($_POST)); } ...

2
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
15.03.2020, 12:03
wolfz, Вы в начале файла вставьте вывод ошибок
PHP
1
2
3
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
и в консоли браузера посмотрите какой ответ возвращает скрипт.в FF это так
Миниатюры
Не срабатывает подготовленный запрос PHP 7  
1
2 / 2 / 2
Регистрация: 25.01.2015
Сообщений: 128
15.03.2020, 20:32  [ТС]
Я переделал сайт на PDO, теперь код вот такой:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$im = new ImageResize($config); 
 
try{
    $responses = $im->resize(); //инициируем изменение размера изображения
    
    # Подготавливаем запрос для записи в базу albums
    $count = $CONNECT->prepare("INSERT INTO `img_albums` (title, text, id_albums, id_gallery, thumb, full_img, added) VALUES ('', '', :id_albums, :id_gallery, :thumb, :full_img, NOW())");
    
    echo '<h3>Миниатюры</h3>';
    //output thumbnails
    foreach($responses["thumbs"] as $response){
        $thumb = $response;// кладем в переменную ссылку на тумбу
        $full_img = mb_substr($response, 6);// кладем в переменную ссылку на изображения 
        # выполнение подготовленного запроса
        $count->execute([':id_album' => $id_album, ':id_gall' => $id_gall, ':thumb' => $thumb, ':full_img' => $full_img]);
    
        echo '<img src="'.$config["upload_url_thumb"].$response.'" class="thumbnails" title="'.$response.'" />';
    }
    
}catch(Exception $e){
    echo '<div class="error">';
    echo $e->getMessage();
    echo '</div>';
}
Ошибку выдает вот такую:

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Не могу понять, в чем ошибка

Добавлено через 15 минут
Ну все усталость....

Не заметил, что плейсхолдеры неправильно написаны(((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2020, 20:32
Помогаю со студенческими работами здесь

Не выполняется подготовленный запрос (PHP PDO ODBC + MS Access)
Добрый день Если пишу (глупо, конечно, получается, но всё же. так я проверял работает запрос вообще или нет)$pr =...

INSERT подготовленный запрос
Здравствуйте. Имеется массив данных, $data Array ( =&gt; 1 =&gt; 2 =&gt; 5 =&gt; desc,names,counts =&gt;...

Не срабатывает SQL запрос в PHP
Добрый день! Столкнулся с проблемой, которую уже несколько часов не могу решить, вообщем есть файл(response.php) который отвечает за...

Не срабатывает php запрос к бд mysql
Раньше никогда в php не использовал классы да и вообще ООП. Тут решил попробовать, закинул стандартное подключение к бд в конструктор, и...

Запрос срабатывает в SQL Server, но не корректно срабатывает в Visual Studio 2017
(SELECT ROW_NUMBER() over (ORDER BY AVG(Отметки.Отметка) DESC) ID, .ФИО, .Группа, Отметки., Отметки.Полугодие, AVG(Отметки.Отметка) AS...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 17.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru