2015-12-23 2 views
1

Ниже приведены детали: 1. PDO connect class, которые имеют функцию для соединения с DB. Скажите класс PDO_connect. 2. Файл логического класса говорит, что файл MyLogic, файл MyLogic включает PDO_connect и еще один класс, в котором написаны функции MyFunction Class.Как использовать PDO для извлечения данных

Проблема: Я не могу выполнить запрос на выбор и выбор объекта, используя запрос ниже. MyFunction класс имеет функцию:

function gCD($query_type,$connection_obj,$u_id,$c_id) 
{ 
    if($query_type == 'SELECT') 
    { 
     $prepare_sql = $connection_obj->prepare("SELECT c_n from cs where u_id=:u_id and c_id=:c_id"); 
     $query_select_clients = $prepare_sql->execute(array(':u_id'=>$u_id,':c_id'=>$c_id)); 
     echo "\n".$prepare_sql->rowCount(); 
     exit; //This is also not working. 
     $g_c_obj = $prepare_sql->fetch(PDO::FETCH_OBJ); 
     var_dump($g_c_obj); 
     } 
} 

Все аргументы передаются из MyLogic файла, соединения и других деталей. Если я делаю это отладки он возвращает истину:

var_dump($prepare_sql->execute(array(':u_id'=>$u_id,':c_id'=>$c_id))) 

Но ни rowCount() ни fetch() дают какой-либо вывод. Ваша помощь очень ценна.

+0

Попробуйте выполнить запрос в базе данных из phpmyadmin. Возвращает ли он какие-либо значения? – mnv

+0

Да, он дает 2 строки в качестве вывода при исполнении на БД. – champs

+0

Вам нужно будет сделать некоторые другие собственные тесты. Можете ли вы создать «файл php» только с подключением и кодом для выбора этого значения и привязки параметров? Кроме того, что произойдет, если вы замените этот запрос на значения и запустите их без необходимости их связывания? – FirstOne

ответ

1

Эта информация слишком длинная для комментария, поэтому я набираю это как ответ, чтобы помочь отладить ваш случай.

Проверяйте каждый случай при использовании функций PDO. Каждая функциональность, как prepare, execute и fetch, имеет возвращаемое значение. Захватите возвращаемое значение, проанализируйте его и действуйте на основе возвращаемого значения. Замените свою информацию в соответствующих местах и ​​посмотрите, где остановлен путь выполнения.

<?php 
$db = new PDO('mysql:host=localhost;dbname=xyz', 'user', 'pass'); 

gCD('SELECT', $db, 2, 2); 

function gCD($query_type,$connection_obj,$u_id,$c_id) 
{ 
    if($query_type == 'SELECT') 
    { 
     try 
     { 
      $prepare_sql = $connection_obj->prepare("SELECT c_n from cs where u_id=:u_id and c_id=:c_id"); 
      if ($prepare_sql === false) 
      { 
       echo "PDO prepare failed\n"; 
       return false; 
      } 
      $query_select_clients = $prepare_sql->execute(array(':u_id'=>$u_id,':c_id'=>$c_id)); 
      if ($query_select_clients === false) 
      { 
       echo "PDO execute failed\n"; 
       return false; 
      } 
      echo "\n".$prepare_sql->rowCount(); 
      $g_c_obj = $prepare_sql->fetch(PDO::FETCH_OBJ); 
      if ($g_c_obj === false) 
      { 
       echo "PDO fetch failed\n"; 
       return false; 
      } 
      var_dump($g_c_obj); 
      return true; 
     } 
     catch (Exception $e) 
     { 
      echo 'Exception: ', $e->getMessage(), "\n"; 
     } 
    } 
    else 
    { 
     echo 'Not a select statement', "\n"; 
    } 
    return false; 
} 
?> 
+0

Спасибо zedfoxus за помощь ... у камней .. – champs

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