2013-04-23 92 views
1

我知道这些值是正确的,因为我测试了它们,我知道该查询在控制台中工作 - 但我正在拉我的头发,试图看看这是不是工作。我没有得到任何错误,但var_dump($row) ===错误。PHP PDO查询不起作用

你能看到我要去哪里吗?

<?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

如果你做了另一个查询,它的工作原理是什么? – 2013-04-23 14:36:23

回答

6

您应该删除参数名称周围的单引号。它所做的基本上是将参数名变成字符串文字,

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

OMG,即时通讯这样一个白痴!非常感谢JW! – Gem 2013-04-23 14:36:35

+0

不客气':D' – 2013-04-23 14:37:03

+0

在绑定中给出类型,pdo绑定会自动将其转换为引号(或者如果其为int) – 2013-04-23 14:39:41