PHP PDO查询无法正常工作

时间:2013-04-23 14:33:25

标签: php mysql pdo

我知道这些值是正确的,因为我测试了它们,我知道查询在控制台中有效 - 但是我正在试着看看它是如何工作的。我没有收到任何错误,但是var_dump($row) === false。

你能看到我出错的地方吗?

<?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());
    }
}
?>

1 个答案:

答案 0 :(得分:6)

你应该删除参数名称周围的单引号。它的作用是将参数名称基本上改为字符串文字

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