2016-07-24 8 views
0

aテーブルに2つの値を挿入したいのですが、その1つは実際には以下のselect文で別のテーブルから取り出されます。selectクエリを使用した挿入クエリへの値の受け渡し

query = "INSERT INTO empallowance(emp_id_fk,allowance_id_fk) VALUES(SELECT emp_id FROM employee WHERE emp_cnic='" + cnic + "',@allowance_id_fk)"; 

図に示すような構文エラー例外があります。パラメータを挿入するために文字列連結を使用すると、SQLのための脆弱性があり、注意してください、また

"INSERT INTO empallowance (emp_id_fk,allowance_id_fk) 
select emp_id, @allowance_id_fk 
from employee 
WHERE emp_cnic='" + cnic + "'" 

:あなたはそのように行うことはできませんが、あなたはselect文とinsert its resultsを作成することができます

enter image description here

+0

エラーを写真ではなく文字列として添付してください。人々が理解しやすくなります –

答えて

0

あなたのSQLステートメントは無効です。以下を使用してください:

query = "INSERT INTO empallowance SELECT emp_id, @allowance_id_fk FROM employee WHERE emp_cnic='" + cnic + "'"; 

hereのすべてについて読むことができます。

0

あなたは以下のようにクエリを変更することができます。

query = "INSERT INTO empallowance(emp_id_fk,allowance_id_fk) SELECT emp_id, @allowance_id_fk FROM employee WHERE emp_cnic= ' " + cnic + "'"; 
0

追加「を()」挿入クエリを分離するための選択クエリの間。

INSERT INTO empallowance(emp_id_fk,allowance_id_fk) VALUES((SELECT emp_id FROM employee WHERE emp_cnic='" + cnic + "'),@allowance_id_fk) 
1

サブクエリでブラケットを使用する必要があります。 試してみてください:

query = "INSERT INTO empallowance(emp_id_fk,allowance_id_fk) VALUES((SELECT emp_id FROM employee WHERE emp_cnic='" + cnic + "'),@allowance_id_fk)"; 
関連する問題