2015-08-08 6 views
0

Привет Я пытаюсь запросить базу данных, используя pdo в php, чтобы вернуть всю информацию в моей базе данных, я правильно подключаюсь к базе данных, но когда я пытаюсь вернуть всю базу данных информацию и распечатать его я получаю этот результат, возвращаемый из моей функции>Запрос базы данных не возвращается как ожидалось php pdo

PDOStatement Object ([QueryString] => SELECT * FROM пользователей)

Я хотел бы для функции, чтобы вернуть всю информацию в базе данных. Вот мой код, ваша помощь будет очень признательна, спасибо.

public function resetpassword() 
    { 

     try 
     { 
      $conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $sql = 'SELECT * FROM users'; 

      $result = $conn->query($sql); 

      return $result; 

      $conn = null; 
     } 
     catch(PDOException $e) 
     { 
      return 'Database Error'; 
     } 

    } 

здесь код я использую, чтобы распечатать результаты от этой функции:

print_r ($usr->resetpassword()); 
+0

Сначала необходимо создать соединение с базой данных в 'ResetPassword function'? Или вы создаете его в каждой функции? Также вам нужно получить результаты, вы не можете вернуть запрос select. – Script47

+1

Попробуйте ['return $ result-> fetchall();'] (http://php.net/manual/en/pdostatement.fetchall.php) вместо 'return $ result;' – Sean

+0

Это '$ conn = null; 'никогда не будет выполнен. Но это не имеет никакого значения, так как это локальная переменная в любом случае ... – arkascha

ответ

1

$ результатом является результат устанавливается в качестве объекта PDOStatement. Если вы используете fetchAll(), он будет извлекать данные в виде массива данных. Хотя вы можете циклически выполнить набор результатов объекта PDOStatement и извлечь данные. Как это:

foreach ($conn->query($sql) as $row) { 
echo $row['yourColumnName']; 
} 

Попробуйте это:

<?php 

    class Database{ 

    public function resetpassword() 
     { 

      try 
      { 
       $conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
       $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
       $sql = 'SELECT * FROM users'; 

       $s = $conn->query($sql); 

       return $s->fetchAll(PDO::FETCH_ASSOC); 

       $conn = null; 
      } 
      catch(PDOException $e) 
      { 
       return 'Database Error'; 
      } 

     } 

    } 

    $usr=new Database(); 

    var_dump($usr->resetpassword()); 
+0

всегда лучше, если есть больше деталей, чем просто «Попробуйте это:» и блок кода. Поделитесь, почему это отличается от кода OPs. Я вижу, что вы сделали, но другие не могут. – Sean

+0

Как указано в приведенном выше комментарии, удалите '$ conn = null', поскольку оператор' return' прекратит его выполнение. – Script47

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