Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не работает подготовленный запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: MySQL Запрос UPDATE не работает
Embit
Отправлено: 24 Июня, 2016 - 22:24:12
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2016  


Помог: 0 раз(а)




И так я делаю простенький сайт и дошла очередь до админпанели. И почему то у меня не работает редактирование(UPDATE).. Программирую в стиле ооп..
Вот код контроллера:
public function actionUpdate($id){

self::checkAdmin();

$categoriesList = Category::getCategoryListAdmin();

$recipe = Recipes::getRecipesById($id);

if(isset($_POST['submit'])){
$options['name'] = $_POST['name'];
$options['category_id'] = $_POST['category_id'];
$options['short_content'] = $_POST['short_content'];
$options['content'] = $_POST['content'];
$options['author'] = $_POST['author'];
$options['is_popul'] = $_POST['is_popul'];
$options['status'] = $_POST['status'];

if(Recipes::updateRecipesById($id, $options)){


// Проверка загрузилось ли через форму изображение
if(is_uploaded_file($_FILES["image"]["tmp_name"])){

// Если загрузилось, переместим его в нужную папку, дадим новое имя
move_uploaded_file($_FILES["image"]["tmp_name"], $_SERVER['DOCUMENT_ROOT'] . "/upload/images/recipes/{$id}.jpg");
}
}
header("Location: /admin/product");
echo mysql_error();

}

require_once(ROOT . '/views/admin_recipes/update.php');
return true;
}
Вот код модели:
public static function updateRecipesById($id, $options){

$db = Db::getConnection();

$sql = "UPDATE recipes
SET
name = :name,
category_id = :category_id,
short_content = :short_content,
content = :content,
author = :author,
is_popul = :is_popul,
status = :status
WHERE id = :id ";

$result = $db->prepare($sql);
$result->bindParam(':id', $id, PDO::PARAM_INT);
$result->bindParam(':name', $options['name'], PDO::PARAM_STR);
$result->bindParam(':short_content', $options['short_content'], PDO::PARAM_STR);
$result->bindParam(':content', $options['content'], PDO::PARAM_STR);
$result->bindParam(':author', $options['author'], PDO::PARAM_STR);
$result->bindParam(':is_popul', $options['is_popul'], PDO::PARAM_INT);
$result->bindParam(':status', $options['status'], PDO::PARAM_INT);

return $result->execute();

}
Выдает такую ошибку:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp\www\models\Recipes.php on line 137
На 137 линии такой код: return $result->execute();
Помогите знатаки, а то я уже не могу пару дней страдаю и не могу ничего сделать..
 
 Top
Мелкий Супермодератор
Отправлено: 24 Июня, 2016 - 22:41:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Embit пишет:
number of bound variables does not match number of tokens

Какой момент в этой фразе необходимо пояснить?


-----
PostgreSQL DBA
 
 Top
Embit
Отправлено: 24 Июня, 2016 - 23:08:10
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2016  


Помог: 0 раз(а)




Мелкий пишет:
Embit пишет:
number of bound variables does not match number of tokens

Какой момент в этой фразе необходимо пояснить?

Ну скажи решение проблемы, ну или хотя бы поясни за эту ошибку
 
 Top
Мелкий Супермодератор
Отправлено: 24 Июня, 2016 - 23:18:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Отдохните, поспите, займитесь на время чем-нибудь другим.
Затем сравните количество и названия параметров в запросе и сколько и чему вы делаете bindParam. Они различаются, о чём PDO и сообщает.


-----
PostgreSQL DBA
 
 Top
Embit
Отправлено: 24 Июня, 2016 - 23:43:43
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2016  


Помог: 0 раз(а)




Мелкий пишет:
Отдохните, поспите, займитесь на время чем-нибудь другим.
Затем сравните количество и названия параметров в запросе и сколько и чему вы делаете bindParam. Они различаются, о чём PDO и сообщает.

Большое спасибо и как я так не заметил.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB