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
Форумы портала PHP.SU :: Версия для печати :: PDO не записывается в базу инфа
Форумы портала PHP.SU » » Вопросы новичков » PDO не записывается в базу инфа

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

1. imedia - 01 Ноября, 2015 - 19:31:39 - перейти к сообщению
Почему не записывается в базу информация
? что не так вроде бы все по мануалу
PHP:
скопировать код в буфер обмена
  1.  
  2. function insert($table_name,$fields,$data){
  3.  
  4. $data = array(
  5.   'username' => $username,
  6.   'password' => sha1($password),
  7.   'full_name' => $full_name,
  8.         'email' => $email,
  9.   'activation_code' => $activation_code,
  10.   'created_at' =>  $created_date,
  11.         'qnt_pass'=>iconv_strlen($password,'UTF-8'),
  12.   );
  13.        foreach($data as $key=>$val){
  14.        $fields[]=$key;
  15.        }
  16. $sql = "INSERT INTO ".$table_name." SET ".parent::pdoSet($fields,$values,$data);
  17. $stm = parent::conn()->prepare($sql);
  18. $stm->execute($values);
  19.  
  20. }
  21.  

расширеный Main.php
PHP:
скопировать код в буфер обмена
  1.  
  2. function conn() { // подключение к БД
  3.   $dsn = "mysql:host=lop.com;dbname=c1lop";
  4.   $user='c1lop';
  5.   $pass='sun';
  6. $opt = array(
  7.   PDO::ATTR_ERRMODE  => PDO::ERRMODE_EXCEPTION,
  8.   PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
  9. );
  10. $pdo = new PDO($dsn, $user, $pass, $opt);
  11.  
  12. }
  13.  
  14. function pdoSet($fields, &$values, $source = array()) {
  15.   $set = '';
  16.   $values = array();
  17.   if (!$source) $source = &$_POST;
  18.   foreach ($fields as $field) {
  19.   if (isset($source[$field])) {
  20.   $set.="`".str_replace("`","``",$field)."`". "=:$field, ";
  21.   $values[$field] = $source[$field];
  22.   }
  23.   }
  24.   return substr($set, 0, -2);
  25. }
  26.  


Fatal error: Call to a member function prepare() on null in /var/www/clients/client1/web28/w eb/protected/models/User.php on line 16ь
(Добавление)
http://phpfaq[dot]ru/pdo#insert
2. Panoptik - 01 Ноября, 2015 - 22:29:55 - перейти к сообщению
conn() должен делать ретурн

PHP:
скопировать код в буфер обмена
  1. $pdo = new PDO($dsn, $user, $pass, $opt);
  2. return $pdo;
3. Faraon-san - 02 Ноября, 2015 - 09:23:51 - перейти к сообщению
и каждый раз вызывая этот метод, ты будешь создавать новое подключение к базе, т.е. будет нагрузка на бд.

 

Powered by ExBB FM 1.0 RC1