Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 20

Ошибка при формировании предварительного запроса

01.09.2015, 22:39. Показов 2430. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Помогите, пожалуйста, найти ошибку при попытке формирования prepared-запроса. Я не могу понять почему метод prepare() не возвращает запрос. Заранее благодарен.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$category = trim($_POST["spend_category"]);
        $cost = $_POST["cost"];
 
        $statement = $mysqli->prepare("SELECT id FROM cost_categories WHERE name = ?");
        $statement->bind_param("s", $category);
        $statement->execute();
        $statement->bind_result($category_id);
        $statement->fetch();
 
        if(empty($category_id)){
            echo "Error occured! Cant find category '" . $category . "'<br>";
        }
 
        if(!is_numeric($cost)){
            echo "Error occured! 'Cost' value must be number, cost = " . $cost . "<br>";
        } else {
            $cost = intval($cost);
            $statement = $mysqli->prepare("INSERT INTO costs (category,amount) VALUES (?,?)");
            
            $statement->bind_param("ii", $category_id, $cost);
            $statement->execute();
 
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2015, 22:39
Ответы с готовыми решениями:

Ошибка при формировании запроса
Доброго всем времени суток, прошу помощи в таком вопросе. Не могу понять в чем ошибка $query = &quot;(\&quot;SELECT id_user FROM...

Ввод данных при формировании запроса
Друзья, прошу помощь в след. вопросе. Есть запрос, условием на выборку которого является наименование компании. Данное условие вводится...

При формировании запроса запись выводится несколько раз
Здравствуйте! Подскажите пожалуйста. При формировании запроса если в одном поле(А) в нескольких записях одно и тоже значение , то эта...

6
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.09.2015, 22:53
какой именно из вызовов и почему он должен возвращать запрос?
Дебажьте код, добавляйте var_dump, чтобы смотреть, что и где возвращает
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 20
01.09.2015, 23:04  [ТС]
KOPOJI, Проблема в 18-й строке. Этот код должен вернуть обьект запроса
PHP
1
$mysqli->prepare("INSERT INTO costs (category,amount) VALUES (?,?)");
Интересен тот факт, что код в 4-й строке возвращает обьект запроса.
Именно дебагингом локализировал проблему в 18-й строке. Но не могу понять в чем проблема.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.09.2015, 23:07

PHP
1
2
3
4
var_dump($statement = $mysqli->prepare("SELECT id FROM cost_categories WHERE name = ?"));
..
if(!$statement->execute())
    var_dump($statement->error);
что выдает?
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 20
01.09.2015, 23:11  [ТС]
KOPOJI,
object(mysqli_stmt)#3 (9) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(2) ["field_count"]=> int(0) ["errno"]=> int(0) ["error"]=> string(0) "" ["sqlstate"]=> string(5) "00000" ["id"]=> int(2) }


string(53) "No data supplied for parameters in prepared statement"
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.09.2015, 23:16
ну вот и ответ, по сути.
Цитата Сообщение от roland Посмотреть сообщение
["affected_rows"]=> int(-1)
это раз (значит, запрос завершился неудачно), и
Цитата Сообщение от roland Посмотреть сообщение
No data supplied for parameters in prepared statement
это два - сам текст ошибки. Точно не знаю, т.к. давно не работал с MySQLi, но, думаю, что ошибка в значении $category_id. Попробуйте так
PHP
1
$statement->bind_param("ii", intval($category_id), $cost);
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 20
01.09.2015, 23:31  [ТС]
KOPOJI, Меня именно и интересует почему запрос завершился неудачно. Все другие проблемы именно поэтому (привязку значений я забыл раскомментировать при последнем запуске). Запрос в базе через консоль выполняется.
Я даже поступил следующим образом: взял запрос:
SQL
1
INSERT INTO costs (amount) VALUES (1)
который не требует привязки значений и выполняется в консоле базы и попробовал создать запрос. Та же проблема.
Возможно я что-то упустил?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.09.2015, 23:31
Помогаю со студенческими работами здесь

Поможите кто чем может. Глюк при формировании запроса с условием
Всем привет. Суть в следующем: Есть таблица &quot;Табель&quot;, с полями : Дата, отметка, объем, ФИО и табельный номер. При создании...

Как сделать чтобы при формировании запроса выводились определенные пареметры дат
Уважаемые форумчане, подскажите, как сделать следующее. Сделан запрос. В данном запросе происходит выборка по трем значениям. Как сделать...

Ошибка при передаче строк в функцию, ошибка при формировании дерева
Курсовой проект, в основе база данных, данные записываются в двоичное дерево. Есть 2 проблемы: 1) Если я считываю структуру с файла...

Ошибка при формировании отчета.
Всем привет. :cry: Опять беда с отчётом. И вроде ошибка такая явная, но не могу понять где она... Что с этим можно сделать? ...

Ошибка при формировании массива
Здравствуйте, подскажите, пожалуйста, почему ошибку выдаёт?


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru