Объединить 2 переменные PHP в SQL заявление
Я занимаюсь разработкой системы на PHP с Oracle и "оптимизировать" update, нужно конкатенировать переменную (со значениями от 1 до 3) в имени переменной, которое будет проходить в инструкции. Переменные поставляется формы, и мне нужно пройти, и без использования массива.
ниже Следует отрывок, который сегодня -:
$update .="CODIGO = '$produto_1' AND ";
В примере выше, нужно будет провести что-то подобное, где $passo
бы фиксированные значения (сегодня 1, 3):
$update .="CODIGO = '$produto_.$passo' AND ";
в Этом случае должен как пройти váriavel также $produto_1
, после $produto_2
......
, Используя точки для объединения не получилось. Какие-либо предложения?
4 answers
Это становится очень сложным, используйте arrays) , по этой причине они существуют, потому что, если вы будете использовать eval
, что будет что-то вроде (рекомендуем не используйте eval
, это только для иллюстрации):
$var1 = eval('return $produto_' . $passo);
$update .="CODIGO = '$var1' AND ";
, То войдите с помощью array
, что будет что-то вроде:
$produto = array();
$produto[1] = ...;
$produto[2] = ...;
$update .= "CODIGO = '" . $produto[$passo] . "' AND ";
Цитировали Вас формы, то могу предположить, что относится к HTML, вы можете делать так же:
<form method="POST" action="pagina.php">
<input type="text" name="passo[]" value="a">
<input type="text" name="passo[]" value="b">
<input type="text" name="passo[]" value="c">
<button>Enviar</button>
</form>
И в PHP будет получить так:
<?php
print_r($_POST['passo']);
Выход будет:
Array
(
[0] => a
[1] => b
[2] => c
)
Я использовал экстракт для создания тестовых переменных passo_X
, но логика применяется, станет for
.
$arrayPassos = array(
'passo_1' => 'teste1',
'passo_2' => 'teste2',
'passo_3' => 'teste3',
'passo_4' => 'teste4',
);
extract($arrayPassos); // criada variaves passo_X
$out = '';
for ($i=1; $i <= count($arrayPassos); $i++){
$out .= ${"passo_{$i}"};
}
Примечание
- для этих случае лучше использовать
array
), а не переменные нумеруются.
, Используя точки для объединения не получилось. Какие-либо предложения?
Не работает, как ожидалось, потому, что попытки объединения осуществляется в кавычки, .
настоящее время интерпретируется как символ, а не как оператор конкатенации.
Следует еще одна альтернатива:
$update .= "CODIGO = '{$produto}_{$passo}' AND ";
Издание можно ссылаться переменная в цикле:
$produto_1 = "PROD1";
$produto_2 = "PROD2";
$produto_3 = "PROD3";
$limite = 3;
$update = "";
for ($passo = 1; $passo <= $limite; $passo++) {
$update .= "CODIGO = '" . ${"produto_$passo"} . "' AND ";
}
echo $update;
// CODIGO = 'PROD1' AND CODIGO = 'PROD2' AND CODIGO = 'PROD3' AND
Может собрать сцепления с функцией - sprintf()
, %s
обмениваются по repectivas переменных (значения) в порядке, которые появляются.
$passo = $_POST['passo'];
$update .= sprinf("CODIGO = '%s_%s'", $produto, $passo);