2012-08-28 64 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