2014-10-14 2 views
0

Я пытаюсь запросить мою базу данных в PDO и получить вывод в форме. Однако инструкция выборки не работает. КодQuerying Mysql с PDO fetch возвращает false

try { 
include '../../config/database.php'; 
$database = new Database(); 
$db = $database->getConnection(); 


//prepare query 
$query = "select 
      payment_id, payment_supplier, payment_ref, payment_cost_rating, payment_amount 
     from 
      payments 
     where 
      payment_id = ? 
     limit 0,1"; 

$stmt = $db->prepare($query); 

//this is the first question mark 
$stmt->bindParam(1, $_REQUEST['myData']); 

//execute our query 
if($stmt->execute()){ 
var_dump($stmt->fetch()); 
    //store retrieved row to a variable 
    $row = $stmt->fetch(PDO::FETCH_ASSOC); 

    //values to fill up our form 
    $payment_id = $row['payment_id']; 
    $payment_supplier = $row['payment_supplier']; 
    $payment_ref = $row['payment_ref']; 
    $payment_cost_rating = $row['payment_cost_rating']; 
    $payment_amount = $row['payment_amount']; 

}else{ 
    echo "Unable to read record."; 
} 

}

var_dump ($stmt); prints 

object(PDOStatement)#3 (1) { ["queryString"]=> string(157) "select payment_id, payment_supplier, payment_ref, payment_cost_rating, payment_amount from payments where payment_id = ? limit 0,1" }

Но fetch() всегда возвращает ложь. Это включенный файл database.php, если он помогает

class Database{ 

// database credentials 
private $host = "localhost"; 
private $db_name = "test-project"; 
private $username = "root"; 
private $password = ""; 
public $conn; 

// get the database connection 
public function getConnection(){ 

    $this->conn = null; 

    try{ 
     $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password); 
    }catch(PDOException $exception){ 
     echo "Connection error: " . $exception->getMessage(); 
    } 

    return $this->conn; 
}} 

Что мне здесь не хватает?

ответ

0

Добавить проверку выполнения результата и увидеть ошибки:

if($stmt->execute()){ 
    ... 
}else{ 
    echo "Unable to read record:". print_r($stmt->errorInfo(), true); 
} 
+0

«еще» утверждение никогда не вызывается, как $ stmt-> выполнить; работает. Однако вызов fetch() не работает –

+0

Вы ограничиваете результаты только одной записью, тогда вы увидите возвращенную запись в var_dump (.. fetch) или нет записей, если запрос возвращает пустой результат. И следующие вызовы fetch() будут сбой после var_dump (.. fetch) всегда. Если fetch всегда false, я советую вам проверить ваш запрос и результат в любой программе sql-client. –

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