2014-04-13 87 views
1

是否可以将参数值插入到插入的select语句中?试图弄清楚这一点我还没有成功。Mysql和PDO:插入选择和参数

我明显知道下面的查询是错误的,但我不知道该从哪里去。

查询

INSERT INTO test 
SELECT other.col1, other.col2, :somevalue 
FROM other 
+0

是':somevalue'打算成为一个字符串文字而不是列名?换句话说,你正在做'SELECT col1,col2',一个'FROM other'字符串,或者你正在尝试使用一个动态列名称'SELECT col1,col2,unknowncol3 FROM other'? –

+0

你可以用更具体的细节描述你正在选择什么,插入的结果应该是什么? –

+0

是的,:somevalue旨在成为字符串文字,而不是列名称。 – Ralph

回答

0

什么您正试图在语法上是有效的,并应能正常工作。除非目标表具有完全相同的列数,则INSERT语句必须包含一个列列表:

INSERT INTO test (col1, col2, col3) 
    SELECT col1, col2, :somevalue 
    FROM other 

注意这句法与PDO绑定参数的作品,因为:somevalue意味着是一个字符串文字。如果你一直希望:somevalue是一个动态确定的列名称而不是一个蜇,那不会按预期工作 - 你会得到一个文字字符串值而不是列名。