2011-11-01 148 views
0

我到目前爲止的代碼已經返回了我需要的代碼。我看不出這裏出了什麼問題。 對代碼進行「糟糕的」調整後,它會提供正確的輸出,但我認爲更好地正確執行。 爲什麼它不起作用?PHP:使用bindValue的PDO(mysql)返回錯誤的結果

錯誤輸出:陣列([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 

回答

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");

+0

之後,但大號變化,我可以用$大小,但是,好不好?我會調整您的代碼 – Rob

+0

$ size is validates ... – Rob

+0

@Rob您是指$ size有效嗎? – xdazz