Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PDO: execute возвращает false
 
 автор: alexander95   (20.10.2012 в 14:48)   письмо автору
37.4 Кб
 
 


    $db =  Mapper_System_DB::getPDO();
    $Q = $db->prepare("SELECT curr FROM tka_db WHERE rname= :rname");
    $Q->execute(array(':rname' => $this->args['data']));
    $curr=$Q->fetch();
    $curr = $curr[0];


Данные приходят и отправляются, но execute возвращает false
При проведении запроса вручную всё работает (прикреплено)

  Ответить  
 
 автор: cheops   (20.10.2012 в 17:13)   письмо автору
 
   для: alexander95   (20.10.2012 в 14:48)
 

После команды
$Q->execute(...)
выполните команду
$Q->debugDumpParams();
что она выводит?

  Ответить  
 
 автор: alexander95   (20.10.2012 в 17:18)   письмо автору
 
   для: cheops   (20.10.2012 в 17:13)
 

SQL: [43] SELECT curr FROM tka_db WHERE rname= :rname Params: 1 Key: Name: [6] :rname paramno=-1 name=[6] ":rname" is_param=1 param_type=2

  Ответить  
 
 автор: cheops   (20.10.2012 в 17:38)   письмо автору
 
   для: alexander95   (20.10.2012 в 14:48)
 

А еще лучше обработайте сообщение об ошибке следующим образом
<?php
      
if(!$q->execute(...))
      {
        
$arr $q->errorInfo();
        echo 
"<pre>";
        
print_r($arr);
        echo 
"</pre>";
      }
?>
У вас выброс исключений подключен? Если подключен, вы их обрабатываете?

  Ответить  
 
 автор: alexander95   (20.10.2012 в 17:50)   письмо автору
 
   для: cheops   (20.10.2012 в 17:38)
 

Обрабатываю. ErrorInfo выкидывает массив с [1] = 0000. Или как-то так. В общем, ошибки нету.

  Ответить  
 
 автор: cheops   (20.10.2012 в 18:14)   письмо автору
 
   для: alexander95   (20.10.2012 в 17:50)
 

Соединение установлено корректно? Другие запросы вроде "SELECT VERSION()" обрабатываются нормально?

  Ответить  
 
 автор: alexander95   (20.10.2012 в 18:21)   письмо автору
 
   для: cheops   (20.10.2012 в 18:14)
 

В принципе, да. Все корректно.


<?php
class Mapper_System_DB{
    public static function 
getPDO($dbname 'db'){
        
$conf Mapper_System_Config::getMysqlSettings();
        try {
            
$PDO = new PDO('mysql:host='.$conf['server'].';dbname='.$dbname.';charset=utf8'$conf['login'], $conf['password']);
        } catch (
PDOException $e) {
            die(
'Connection failed: '.$e->getMessage());
        }
        return 
$PDO;
    }
}
?>


То есть. при неудачном подключении он вылетал бы. Ну и запросы типа SELECT * FROM tka_db работают нормально. Если они вызываются с помощью ->query(); Такое чувство, что не работает (вылетает) именно этот execute()

  Ответить  
 
 автор: cheops   (20.10.2012 в 20:57)   письмо автору
 
   для: alexander95   (20.10.2012 в 18:21)
 

А если прицепить параметр при помощи метода bindParam() ситуация не меняется?

  Ответить  
 
 автор: alexander95   (21.10.2012 в 15:14)   письмо автору
 
   для: cheops   (20.10.2012 в 20:57)
 

Нет, не меняется :(

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования