MySQL PDO绑定空结果

时间:2016-03-13 10:22:57

标签: php mysql database pdo binding

这是我的查询

$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();

最有可能是绑定问题?任何帮助都非常感谢。

更新 一个接一个地尝试,但没有工作

$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

  }
}

3 个答案:

答案 0 :(得分:0)

在绑定codepen.io/erenesto/pen/zqKZKq 中,您可以尝试两件事。删除sku的$config_select->execute( array( ':sku' => $sku, PDO::PARAM_STR));,如果这不起作用,请删除:

编辑:

你可以这样做

PDO::PARAM_STR

答案 1 :(得分:0)

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

答案 2 :(得分: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;
}