PHP:使用bindValue的PDO(mysql)返回错误的结果

时间:2011-11-01 05:08:36

标签: php pdo

到目前为止,我所获得的代码将返回我需要的代码。我看不出这里出了什么问题。 对代码进行“坏”调整后,它会提供正确的输出,但我认为更好地正确执行。 为什么它不起作用?

输出错误:数组([L] => L)

右输出:数​​组([L] => 9)

此代码输出错误:

public function getStockByID_SIZE($size, $stockId){
    try {

    $this->_dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

    $sth=$this->_dbh->prepare("SELECT :size from stock WHERE id_product = :stockId"); 
    $sth->bindValue(':size', $size, PDO::PARAM_STR);
    $sth->bindValue(":stockId", $stockId);

    $sth->execute();
    $result = $sth->fetch(PDO::FETCH_ASSOC);
    return $result;

    } catch (PDOException $e) {     
        return "Error";  
    }
}

相同的代码但是(错误的)调整会返回正确的代码:

 $sth=$this->_dbh->prepare("SELECT $size from stock WHERE id_product = :stockId"); 

//与:相比:

 $sth=$this->_dbh->prepare("SELECT :size from stock WHERE id_product = :stockId");
 $sth->bindValue(':size', $size); //use of PDO::PARAM_STR doenst matter for outcome

1 个答案:

答案 0 :(得分:2)

$sth=$this->_dbh->prepare("SELECT L from stock WHERE id_product = :stockId");是正确的方式。

您的方法就是SELECT 'L' from stock WHERE id_product = :stockId,它会为您提供结果'L'

验证$size

后,您可以执行以下操作

$sth=$this->_dbh->prepare("SELECT $size from stock WHERE id_product = :stockId");