2012-08-28 59 views
0

可能重复:
MySQL INSERT from a SELECT with PDOINSERT INTO的PHP PDO等效... SELECT

我过去使用的mysql_*风格通过PHP连接到MySQL的和我最后做的跋涉到PDO。在过去,我喜欢使用mysql的INSERT INTO...SELECT...来插入数据。好处是我可以在稍后将列添加到表中,而不必完全隐藏与该表交互的所有其他表单。我的问题很简单。 。 。有没有与此相当的PDO?

我在准备的语句中使用旧的语法没有太大的运气,也没有看到使用这种格式的任何示例。任何想法或建议将不胜感激。

+0

你问是否有一个等效于INSERT和SELECT的PDO? –

+0

您可以像使用mysql_query()一样通过PDO向MySQL发送相同的SQL命令,包括['INSERT ... SELECT'](http://dev.mysql.com/doc/en/insert- select.html)。 – eggyal

+0

我的问题是通过PDO引用http://dev.mysql.com/doc/refman/5.0/en/insert-select.html。这与Jocelyn引用的帖子有很大不同。请参阅下面答复Paul的回答。谢谢你们。 – user1459766

回答

1

查询不变。你可以使用之类的东西:

$postUser = $_POST["user_name"]; 
$stmt = $dbh->prepare("SELECT * FROM user WHERE userName = :postUser"); 
$stmt->bindParam(':postUser', $postUser); 
$stmt->execute(); 
+0

虽然这并没有直接回答问题,但我询问您的及时回复并确认查询不会改变是有帮助的。我应该更好地提出这个问题,但我历史上插入数据的方式是通过http://dev.mysql.com/doc/refman/5.0/en/insert-select.html,它不使用VALUES而是使用SELECT。即使表中包含其他字段,也只允许在所标识的字段中插入。让这个工作起作用的关键只是使用bindParam作为准备好的语句中包含的字段,没有更多。 – user1459766

1

INSERT

$sql = "INSERT INTO table (whatever) VALUES (:whatever)"; 

$q = $conn->prepare($sql); 

$q->execute(array(':whatever'=>'whatever')); 

并以SELECT

$sql = "SELECT whatever FROM table WHERE whatever = :whatever"; 

$q = $conn->prepare($sql); 

$q->execute(array(':whatever'=>'whatever')); 

$row = $q->fetch(); 

欲了解更多有关准备语句去here