2016-12-26 7 views
3

У меня есть этот запрос, это один работают нормальноКак вычесть в базе данных MySQL одно значение таблицы на основе другого значения таблицы?

$qu= "UPDATE comp_controller SET num_comp=(num_comp-(SELECT num_comp FROM alloted_comp WHERE comp_name="Arduino uno")) WHERE comp_name ="Arduino uno""; 

я использовал предварительно определенное значение в COMP_NAME, но должен получить COMP_NAME из следующих запросов

$sql="INSERT INTO alloted_comp (comp_type,comp_name,num_comp)VALUES ('$_POST[comp_type]','$_POST[comp_name]','$_POST[num_comp]') "; 

как получить значение вставки в первом запросе от второй запрос

Update:

I modifie d мой код

$type = isset($_POST['comp_type'])? $_POST['comp_type'] : ''; 
$name = isset($_POST['comp_name'])? $_POST['comp_name'] :''; 
$comp = isset($_POST['num_comp]'])? $_POST['num_comp]'] :''; 


$sql="INSERT INTO alloted_comp (comp_type,comp_name,num_comp) 
VALUES ('$_POST[comp_type]','$_POST[comp_name]',$_POST[num_comp]) 
ON DUPLICATE KEY UPDATE num_comp=num_comp+'$_POST[num_comp]'"; 

$qu= mysql_query("UPDATE comp_controller SET num_comp= 
(num_comp-(SELECTnum_comp FROM alloted_comp 
WHERE comp_name='$name'))WHERE comp_name ='$name' "); 

Теперь я столкнулся с новой проблемой подстанции, если я вхожу num_comp 1, он будет вычитанием со значением в 2 или 3 или несколько раз со значением мусора

ответ

0

Вы можете использовать переменную в запросе UPDATE так же, как вы делаете в запросе INSERT.

$qu= "UPDATE comp_controller 
     SET num_comp=(num_comp-(
     SELECT num_comp FROM alloted_comp 
     WHERE comp_name='$_POST[comp_name]')) 
     WHERE comp_name ='$_POST[comp_name]'"; 

Обратите внимание, что это уязвимо для SQL-инъекции. Вы должны научиться использовать подготовленные запросы или, по крайней мере, использовать mysqli_real_escape_string, чтобы избежать переменных.

0

Try, как это .. ... для второго запроса

$type = isset($_POST['comp_type'])? $_POST['comp_type'] : ''; 
$name = isset($_POST['comp_name'])? $_POST['comp_name'] :''; 
$comp = isset($_POST['num_comp]'])? $_POST['num_comp]'] :''; 

$sql="INSERT INTO alloted_comp (comp_type,comp_name,num_comp) VALUES('$type','$name','$comp') "; 

для запроса на обновление ....

$qu= "UPDATE comp_controller SET num_comp=(num_comp-(SELECT num_comp FROM alloted_comp WHERE comp_name='$name')) WHERE comp_name ='$name' "; 
+0

Этот код уязвим для инъекций SQL –

+0

использовать подготовленные запросы или mysqli_real_escape_string для исключения переменных. –

+0

@HikmatSijapati Спасибо за ваш ответ, работая отлично, но проблема с вычитанием. Если я введу num_comp 1, он вычитает со значением как 2 или 3, или несколько раз num_comp в comp_controller становится 0 – kiran

Смежные вопросы