1

我知道这些值是正确的,因为我对它们进行了测试,我知道查询在控制台中有效 - 但我正在拔头发,试图看看它是如何不起作用的。我没有收到任何错误,但var_dump($row)=== 错误。

你能看出我哪里错了吗?

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

1 回答 1

6

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

SELECT *
FROM cart
WHERE cart_id = :cartid AND sku = :sku
于 2013-04-23T14:35:04.640 回答