使用select查询将值传递给插入查询

时间:2016-07-24 10:03:28

标签: mysql sql

我想在一个表中插入两个值。其中一个实际上是从另一个表中使用select语句,如下所示。

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

如图所示,存在语法错误异常。

enter image description here

6 个答案:

答案 0 :(得分:1)

你必须在子查询中使用括号。 试试这个:

$date = date('Y-M-D');
$new-date = date_format($date,'F jS Y');
echo $new-date;

答案 1 :(得分:0)

你不能这样做但你可以创建一个select语句和insert its results

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

另外,请注意,使用字符串连接插入参数对于SQL注入很容易受到攻击 - 使用parameterized queries而不是

答案 2 :(得分:0)

您的SQL语句无效。使用以下内容:

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

您可以阅读有关方法的所有信息here

答案 3 :(得分:0)

您可以按以下方式修改查询:

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

答案 4 :(得分:0)

在select查询之间添加'()'以分隔插入查询。

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

答案 5 :(得分:0)

你可以很容易地做到这一点,它对我有用

query = "INSERT into TABLE1 (name,city) 
Select name, 'Paris' from TABLE2 where id = 1";

您可以直接在选择查询中赋值。