2015-11-28 5 views
1

я получаю ошибку говоря:PDO Постулаты со вставкой

[Sat Nov 28 08:07:29.066118 2015] [:error] PHP 2. PDOStatement->execute() /home/www/Files/direct_download.php:213, referer: Listen-1.html

$db_host = 'localhost'; 
$db_user = 'dbuser'; 
$db_passwd = 'passwd'; 
$db_name = 'dbname'; 
$db_charset = 'utf8'; 

    $connexion = new PDO('mysql:host='.$db_host.';dbname='.$db_name, $db_user, $db_passwd 
     , array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES '.$db_charset.'')); //SET NAMES utf8 
$connexion->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); 

// Insert into downloads table to track downloads 
try {    
$addDownload = $connexion->prepare("INSERT INTO `downlads` (`idd`, 
    `rub`, 
    `srub`, 
    `cat`, 
    `scat`, 
    `menu`, 
    `type`, 
    `action`, 
    `num`, 
    `randkey`, 
    `person_ip`, 
    `when`) 
    VALUES (NULL, :rub, :srub, :cat, :scat, :menu, :type, :action, :num, :rand, :ip, :when)"); 

$addDownload->execute(array(
      $rub, $srub, $cat, $scat, $menu, $type, $action, $num, $randKeys, $ip_visiteur, $DateTime));     
} catch(PDOException $e) { 
    echo $e->getMessage(); 
}    

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

enter image description here Спасибо за вашу помощь

+0

От того, где эти значения определяют ' $ rub, $ srub, $ cat ...... 'и idd - первичный ключ в вашей таблице ??? – Saty

+0

IDD мой первичный ключ, я удалил его, но все та же ошибка –

+0

попробуйте 'INSERT INTO' downlads' ('rub', ' srub', 'cat', ' scat', 'menu', 'type', ' action', 'num', ' randkey', 'person_ip', ' when') VALUES (?,?,?,?,?,?,?,?,?, ?,?)?) $ addDownload-> execute (array ( $ rub, $ srub, $ cat, $ scat, $ menu, $ type, $ action, $ num, $ randKeys, $ ip_visiteur, $ DateTime)); ' – Saty

ответ

1

Try определяя null в заявке execute. Или попробуйте это

$addDownload = $connexion->prepare("INSERT INTO `downlads` (`idd`, 
`rub`, 
`srub`, 
`cat`, 
`scat`, 
`menu`, 
`type`, 
`action`, 
`num`, 
`randkey`, 
`person_ip`, 
`when`) 
VALUES (:null, :rub, :srub, :cat, :scat, :menu, :type, :action, :num, :rand, :ip, :when)"); 

А также попробовать использовать его как этот

$addDownload->execute(array(
     ':null'=>NULL,':rub'=>$rub, ':srub'=>$srub, ':cat'=>$cat, ':scat'=>$scat, ':menu'=>$menu, ':type'=>$type, ':action'=>$action, ':num'=>$num, ':rand'=>$randKeys, ':ip'=>$ip_visiteur, ':when'=>$DateTime)); 
+0

Я удалил null и по-прежнему остается той же ошибкой: $ addDownload-> execute (array ()': rub' => $ rub, ': srub' => $ srub, ': cat' => $ cat, ': scat' => $ scat, ': menu' => $ menu, ': type' => $ type, ': action' => $ action, ': num' => $ num, ': rand' => $ randKeys, ': ip' => $ ip_visiteur, ': when' => $ DateTime)); –

+0

Попробуйте использовать его сейчас, так как я его отредактировал. Если он по-прежнему остается неизменным, я уверен, что проблема связана с вашей переменной даты или типом данных в вашей базе данных. –

1

Идущий через PDO statement

Ваш код будет как: -

try {  
$addDownload = $connexion->prepare("INSERT INTO `downlads` ( 
    `rub`, 
    `srub`, 
    `scat`) 
    VALUES (:rub, :srub, :scat)"); 
      $addDownload->bindParam(':rub', $rub, PDO::PARAM_STR, 100); 
      $addDownload->bindParam(':srub', $srub, PDO::PARAM_STR, 100); 
      $addDownload->bindParam(':scat', $cat, PDO::PARAM_STR, 100); 

    $addDownload->execute();     

} catch(PDOException $e) { 
    echo $e->getMessage(); 
} 
+0

У меня есть эта ошибка [Tue Dec 01 06: 39: 41.510312 2015] [: error] [pid 19826] [client 105.132.98.12:55267] PHP 2. PDOStatement-> execute() direct_download.php: 206, I отредактировал мое первое сообщение с скриншотом –

+0

Что означает 100 штук? $ addDownload-> bindParam (': rub', $ rub, PDO :: PARAM_STR, 100); –

+0

Его длина Тип данных. Это строка параметров PDO длиной 100 (PDO :: PARAM_STR, 100). –

Смежные вопросы