2013-08-08 2 views
0
$query2="insert into `articles` set article_title=:article,user_name=:user,post_id=:postid  article_content=:articlecontent,article_rank=:rank,add_date=:date,article_100img=:article_100,articl e_200img=:article_200,article_400img=:article_400,artcle_600img=:article_600,article_slug=:slug"; 
    $stmt=$db->prepare($query2); 
    $stmt->bindParam(':article',$article_title); 
    $stmt->bindParam(':articlecontent',$article_desc); 
    $stmt->bindParam(':rank',$rank); 
    $stmt->bindParam(':date',$date); 
    $stmt->bindParam(':article_100',$x100img); 
    $stmt->bindParam(':article_200',$x200img); 
    $stmt->bindParam(':article_400',$x400img); 
    $stmt->bindParam(':article_600',$x250img); 
    $stmt->bindParam(':slug',$slug); 
    $stmt->bindParam(':user',$name); 
    $stmt->bindParam(':postid',$id); 
    $stmt->execute(); 

Я не знаю, в чем проблема с этим кодом..so, пожалуйста, помогите мне.PDO данные не вставляются в базу данных без ошибок

+0

Какая ошибка вы получаете ..? – NREZ

+0

i get no error bt не вставлять в базу данных .. –

ответ

2

Для того чтобы увидеть ошибки базы данных, нужно установить PDO errmode на исключения. Исключения лучше обычных ошибок по-разному: они всегда содержат трассировку стека, их можно поймать с помощью try..catch или обработать с помощью специального обработчика ошибок. И даже необработанные, они действуют как обычные ошибки PHP, предоставляя всю важную информацию, следуя настройкам отчетов об ошибках на сайте.

Обратите внимание, что установка этого режима в качестве параметра подключения позволит также исключать ошибки PDO при ошибках соединения, что очень важно.
Итак, вот пример для создания соединения PDO правильный путь:

$dsn = "mysql:host=$host;dbname=$db;charset=utf8"; 
$opt = array(
    PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
    // other options 
); 
$pdo = new PDO($dsn, $user, $pass, $opt); 

Подключение таким образом, вы всегда будете в курсе всех ошибок базы данных, произошла во время выполнения запроса. Обратите внимание, что вы должны уметь видеть ошибки PHP вообще. На живом сайте вы должны заглянуть в журналы ошибок, поэтому, настройки должны быть

error_reporting(E_ALL); 
ini_set('display_errors',0); 
ini_set('log_errors',1); 

в то время как на локальном сервере разработки это нормально, чтобы сделать ошибки на экране:

error_reporting(E_ALL); 
ini_set('display_errors',1); 

и, конечно, никогда не должен использовать оператор подавления ошибок (@) перед вашими заявлениями PDO.

Кроме того, из-за многие плохие примеры, рассказывающих вам обернуть каждое утверждение PDO в try..catch блок, я должен сделать отдельную заметку:

НЕ используйте try..catch оператора просто повторить ошибку сообщение. Исключение исключений для этой цели уже отлично, поскольку оно будет действовать точно так же, как и другие ошибки PHP, поэтому вы можете определить поведение, используя параметры сайта, поэтому будет иметь ваше сообщение об ошибке без этого бесполезного кода.Хотя безоговорочное эхо-сообщение об ошибке может выявить некоторую конфиденциальную информацию потенциальному злоумышленнику, все же запутать честного посетителя.

  • A custom exception handler может быть добавлен позднее, но не требуется. Специально для новых пользователей рекомендуется использовать необработанные исключения, поскольку они чрезвычайно информативны, полезны и безопасны.
  • Используйте try..catch, только если вы собираетесь справиться с самой ошибкой - скажем, откат транзакции.

Кроме того, я нахожу article_XXX поля совершенно бесполезно. Не можете ли вы сделать эти имена изображений computational? Скажем, для статьи id = 100500 100 изображений будут 100500_100.jpg?