Таблица:
-- phpMyAdmin SQL Dump
-- version 3.5.2
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Авг 13 2012 г., 11:29
-- Версия сервера: 5.5.25a
-- Версия PHP: 5.4.5
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 utf8 */;
--
-- База данных: `test`
--
-- --------------------------------------------------------
--
-- Структура таблицы `articles`
--
CREATE TABLE IF NOT EXISTS `articles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cid` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
/*!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 */;
вот метод, который сохраняет данные
/* сохранение статьи
* @param (int) i - идентификатор категории
* @param (string) $a - название статьи
* @param (string) $c - содержание статьи
*/
public function SaveArt($i,$a,$c)
{
if ($result = $this->pdo->prepare("INSERT INTO `articles`(`cid`,`title`,`content`) VALUES (':i',':a',':c')"))
{
$result->bindValue(":i",$i,PDO::PARAM_INT);
$result->bindValue(":a",$a,PDO::PARAM_STR);
$result->bindValue(":c",$c,PDO::PARAM_STR);
$result->execute();
// print_r($this->pdo->errorInfo());
return TRUE;
}
else
{
return FALSE;
}
}
Что я только ни делал уже и var_dump и ошибку смотрел PDO, но все проходит как по маслу, но! В таблице ничего не появляется, что может быть причиной этому?
Спустя 9 минут, 31 секунда (13.08.2012 - 11:42) Stasonix написал(а):
mysql> INSERT INTO `articles`(cid,title,content) VALUES (1,'test','soderzhanie')
;
Query OK, 1 row affected (0.14 sec)
mysql>
консольный вариант сработал, но php-шный нивкакую.
Спустя 2 минуты, 55 секунд (13.08.2012 - 11:45) Игорь_Vasinsky написал(а):
не юзал ни разу))
но может вместо
но может вместо
Цитата |
bindValue |
bindParam
Спустя 1 минута, 48 секунд (13.08.2012 - 11:47) Stasonix написал(а):
Игорь_Vasinsky, неа: http://php.net/manual/ru/pdostatement.bindvalue.php
Даже прямо вбил:
голяк.
Даже прямо вбил:
public function SaveArt($i,$a,$c)
{
if ($result = $this->pdo->prepare("INSERT INTO `articles`(`cid`,`title`,`content`) VALUES (':i',':a',':c')"))
{
$i = 3;
$a = "test me";
$c = "content test";
голяк.
Спустя 3 минуты, 46 секунд (13.08.2012 - 11:51) Игорь_Vasinsky написал(а):
а так сработает?
/* сохранение статьи
* @param (int) i - идентификатор категории
* @param (string) $a - название статьи
* @param (string) $c - содержание статьи
*/
public function SaveArt($i,$a,$c)
{
if ($result = $this->pdo->prepare("INSERT INTO `articles`(`cid`,`title`,`content`) VALUES (?,?,?)"))
{
$result->bindValue(1,$i,PDO::PARAM_INT);
$result->bindValue(2,$a,PDO::PARAM_STR);
$result->bindValue(3,$c,PDO::PARAM_STR);
$result->execute();
// print_r($this->pdo->errorInfo());
return TRUE;
}
else
{
return FALSE;
}
}
Спустя 5 минут, 29 секунд (13.08.2012 - 11:56) Stasonix написал(а):
Игорь_Vasinsky, увы.
Расскоментил сообщение об ошибке:
Я так понимаю это означает что ошибок вовсе и нету?
Расскоментил сообщение об ошибке:
Array
(
[0] => 00000
[1] =>
[2] =>
)
Я так понимаю это означает что ошибок вовсе и нету?
Спустя 10 минут, 51 секунда (13.08.2012 - 12:07) Stasonix написал(а):
включил сообщения об ошибках поболее серьезнее:
Очевидно что проблема с cid, но в чем?
cid - это число, var_dump, да и прямой ввод показал же.
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
<br />
<b>Fatal error</b>: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '?' for column 'cid' at row 1' in model:104
Stack trace:
#0 model.php(104): PDOStatement->execute()
#1 controller.test.php(67): Feature->SaveArt(11, 'assssssss', '<p>&n...')
#2 {main}
thrown in <b>model.php</b> on line <b>104</b><br />
Очевидно что проблема с cid, но в чем?
cid - это число, var_dump, да и прямой ввод показал же.
Спустя 15 минут, 47 секунд (13.08.2012 - 12:23) Stasonix написал(а):
Извиняюсь, сам дурак.
Нашел причину (stackoverflow чуток помог). В общем все дело в долбанных кавычках, их попросту не надо ставить в запросе:
И усё.
Нашел причину (stackoverflow чуток помог). В общем все дело в долбанных кавычках, их попросту не надо ставить в запросе:
if ($result = $this->pdo->prepare("INSERT INTO `articles`(`cid`,`title`,`content`) VALUES (:i,:a,:c)"))
И усё.