我想通過在構建我的查詢之前運行一些邏輯操作來使我的PDO查詢動態化。PHP替換字符串周圍的引號
但是,當查詢當前內置沒有結果返回,因爲列引用中引用列名(至少我相信這是問題),我將如何去除圍繞我的字符串引號?
邏輯運算&查詢
// Logical comparison
if($psiA >= $psiB){
$highestPsi = "high_psi";
} else {
$highestPsi = "flow_psi";
}
if($gpmA >= $gpmB){
$highestGpm = "high_gpm";
} else {
$highestGpm = "flow_gpm";
}
var_dump($highestGpm);
var_dump($highestPsi);
// Set up query variables
if($pVal <= 0 && $gVal <= 0) {
$sql = "SELECT * FROM pumps WHERE pump_type = :pType AND :thePsi >= :pVal AND :theGpm >= :gVal AND pump_category = :cVal";
} else {
$sql = "SELECT * FROM pumps WHERE pump_type = :pType AND :thePsi >= :pVal AND :theGpm >= :gVal AND pump_category = :cVal";
var_dump($sql);
}
// Build and execute query
$stmt = $connection->prepare($sql);
$stmt->bindParam(':pType', $pType, PDO::PARAM_STR);
$stmt->bindParam(':pVal', $pVal, PDO::PARAM_STR);
$stmt->bindParam(':gVal', $gVal, PDO::PARAM_STR);
$stmt->bindParam(':cVal', $cVal, PDO::PARAM_STR);
$stmt->bindParam(':thePsi', $highestPsi, PDO::PARAM_STR);
$stmt->bindParam(':theGpm', $highestGpm, PDO::PARAM_STR);
$stmt->execute(array(
'pType' => $pType,
'pVal' => $pVal,
'gVal' => $gVal,
'cVal' => $cVal,
'thePsi' => $highestPsi,
'theGpm' => $highestGpm
));
我知道轉儲返回正確的列名,我敢肯定,我需要進行某種形式的正則表達式來剝去引號這個工作。
任何指針將不勝感激。
那麼首先你綁定值兩次。 bindParam或execute中的數組。 – Virus721
你是否將字段名稱綁定爲參數?因爲那不行,只要將它連接到你的查詢字符串中,只要它不是用戶輸入,它的注入安全(除非你做一些愚蠢的事情) – x4rf41