Объединить 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......

, Используя точки для объединения не получилось. Какие-либо предложения?

Author: Diego, 2016-09-09

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
)
 3
Author: Guilherme Nascimento, 2016-09-09 18:05:31

Я использовал экстракт для создания тестовых переменных 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), а не переменные нумеруются.
 4
Author: Guilherme Lautert, 2016-09-09 17:12:48

, Используя точки для объединения не получилось. Какие-либо предложения?

Не работает, как ожидалось, потому, что попытки объединения осуществляется в кавычки, . настоящее время интерпретируется как символ, а не как оператор конкатенации.

Следует еще одна альтернатива:

$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

Посмотреть DEMO

 2
Author: stderr, 2016-09-09 20:31:38

Может собрать сцепления с функцией - sprintf(), %s обмениваются по repectivas переменных (значения) в порядке, которые появляются.

$passo = $_POST['passo']; 
$update .= sprinf("CODIGO = '%s_%s'", $produto, $passo);
 1
Author: rray, 2016-09-09 17:20:39