2013-04-23 4 views
1

Я знаю, что значения верны, потому что я их тестировал, я знаю, что запрос работает в консоли. Но я вытягиваю свои волосы, пытаясь понять, как это не работает. Я не получаю никаких ошибок, но var_dump($row) === false.PHP PDO Query не работает

Вы видите, куда я иду не так?

<?php 
include('config.php'); 
//include('classes/db.class.php'); 
session_start(); 
var_dump($_SESSION['cart_id']); 
$db = new PDO('mysql:host=' . DB_HOST .';dbname=' . DB_NAME, DB_USER, DB_PASS); 
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
if(isset($_POST['add2cart'])) 
{ 
    if(!isset($_SESSION['cart_id'])) 
     $_SESSION['cart_id'] = md5(my stuff here); 
    try{ 
     $stmt = $db->prepare(" 
      SELECT * 
      FROM cart 
      WHERE cart_id = ':cartid' 
      AND sku = ':sku' 
     "); 
     $stmt->bindParam(':cartid', $_SESSION['cart_id'], PDO::PARAM_STR); 
     $stmt->bindParam(':sku', $_POST['sku'], PDO::PARAM_STR); 
     $stmt->execute(); 
     //print_r($stmt); 
     $row = $stmt->fetch(); 
     var_dump($row); 
    } catch(PDOException $e) 
    { 
     die($e->getMessage()); 
    } 
} 
?> 
+0

Если вы выполняете другой запрос, это работает? –

ответ

6

Вы должны удалить одинарные кавычки вокруг имени параметра. Что он делает, это в основном изменяет имя параметра в строковый литерал,

SELECT * 
FROM cart 
WHERE cart_id = :cartid AND sku = :sku 
+0

OMG, им такой идиот! Большое вам спасибо JW! – Gem

+0

приветствуется ': D' –

+0

В привязке вы указываете тип, привязка pdo автоматически преобразует его в кавычки (или нет, если его int) –