2016-03-13 89 views
0

这里是我的查询MySQL的PDO结合空结果

$sql = "SELECT sku, cost, fee 
      FROM `mws_config_data` WHERE `sku` = :sku"; 
$config_select = $pdo->prepare($sql); 
$config_select->execute(array(':sku' => $sku, PDO::PARAM_STR)); 

返回空的结果

但是,如果我做硬编码sku值,例如,AHX-32929-xxx,并相应地运行查询,它的工作原理,并显示记录

$sql = "SELECT sku, cost, fee 
      FROM `mws_config_data` WHERE `sku` = 'AHX-32929-xxx'"; 
$config_select = $pdo->prepare($sql); 
$config_select->execute(); 

最有可能的一个绑定问题?任何帮助,高度赞赏。

UPDATE: 尝试都一个接一个,但没有工作

$config_select->execute(array('sku' => $sku)); 
$config_select->execute(array( ':sku' => $sku)); 

我的最后一步为

$config_data = $config_select->fetchAll(PDO::FETCH_ASSOC); 
var_dump($config_data); 

空的结果(我的意思)

array(1) { 
    [0]=> 
    array(3) { 
    ["sku"]=> 
    NULL 
    ["cog"]=> 
    NULL 
    ["cost"]=> 
    NULL 
    ["fee"]=> 
    NULL 

    } 
} 
+0

你确定'$ sku'总是有值吗?它似乎就要空了。用'echo'检查它。 –

+0

倾倒它,并且它有 –

+0

定义“空的结果”。你的代码返回什么特定的值。 –

回答

0

在绑定$config_select->execute(array(':sku' => $sku, PDO::PARAM_STR));中,您可以尝试2件事。删除SKU的:,如果不行删除PDO::PARAM_STR

编辑:

你可以做到这一点

$config_select->bindParam(':sku', $sku, PDO::PARAM_STR); 
$config_select->execute(); 
+0

感谢您的帮助,仍然,同样的结果... –

0

尝试

$config_select = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
$config_select->execute(array(':sku' => $sku)); 
+0

did not work bro ... –

0

试试这个。我在这里大部分时间使用类这里的一个例子

public function findMySku($sku) 
{ 

try 
{ 
$sql = "SELECT sku, cost, fee 
FROM `mws_config_data` WHERE `sku` = :sku"; 
$stmt = $this->dbh->prepare($sql); 
$stmt->bindParam(":sku", $sku); 
$stmt->execute(); 
$myTableOutput = $stmt->fetchAll(PDO::"here is your choice what you want to do and depending where I for example use FETCH_CLASS since my database is in my class"); 
} 
catch 
{ 
die($e->getMessage()); 
} 

if(isset($myTableOutput[0]) 
{ 
    $mySku = $myTableOutput[0]; 
} 
else 
{ 
    die("nooo sku found!"); 
} 

    return $mySku; 
}