Я пытаюсь сделать свой запрос PDO динамическим, выполнив некоторые логические операции перед созданием моего запроса.PHP Заменить кавычки, окружающие строку
Однако, когда запрос в настоящее время не создан, результаты не возвращаются, потому что имя столбца, на которое я ссылаюсь в окружении в цитатах (по крайней мере, я считаю, что это проблема), как я могу удалить кавычки, окружающие мою строку?
Логическая операция & Query
// 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, либо массив в исполнении. – Virus721
Вы связываете имя поля в качестве параметра? потому что это не сработает, просто вставьте его в строку запроса, пока его не вводит пользователь, его безопасная инъекция (если вы не сделаете что-то глупое) – x4rf41