How to write SELECT result?

1

I need to insert data into a table A, but I have an unknown data and I need to search it in table B.

So, I need to do a SELECT on table B and save it for later insertion into table A.

I have achieved the expected result, but it is a palliative solution:

$cod = $_POST['descricao']; 
$produto = $_POST['codigoproduto'];
$quant = $_POST['quantidade'];

$sqlcode = mysql_query("INSERT INTO tabelaA(codigo, codigoproduto, quantidade) SELECT codigo, 9212, codigo FROM tabelaB WHERE descricao='$cod'");
$sqlcode1 = mysql_query("UPDATE tabelaA SET codigoproduto='$produto', quantidade='$quant' WHERE codigoproduto=9212");

How to do it correctly?

    
asked by anonymous 09.01.2015 / 19:43

2 answers

1

As you've already noticed by using the 9212 constant in INSERT..SELECT , you can set some of the values returned by SELECT - say, instead of getting the table value, you define a constant to represent the value of the field .

So, in your INSERT command, you can get a table value and the other values you get from your variables:

$sqlcode = mysql_query("INSERT INTO tabelaA(codigo, codigoproduto, quantidade) SELECT codigo, '$produto', '$quant' FROM tabelaB WHERE descricao='$cod'");

Just remember, as usual, that you are relying on user information and sending them straight to your database, which is a security flaw (see "SQL Injection").

    
09.01.2015 / 19:59
1

You can use subquery , which is a query within the other, like this:

$cod = $_POST['descricao']; 
$produto = $_POST['codigoproduto'];
$quant = $_POST['quantidade'];

// aconselho a usar o LIMIT 1 para agilizar a consulta
$selectCodigo = "SELECT codigo FROM tabelaB WHERE descricao LIKE $cod LIMIT 1";

// não esqueça dos parênteses entre a variável $selectCodigo
// os parênteses são necessários para separar a subquery da query principal
$sqlcode = mysql_query("INSERT INTO tabelaA (codigo, codigoproduto, quantidade) VALUES (($selectCodigo), $produto, $quant)");
    
09.01.2015 / 19:57