【问题标题】:PHP PDO Equivalent of INSERT INTO ... SELECT [duplicate]PHP PDO 等效于 INSERT INTO ... SELECT [重复]
【发布时间】:2012-08-22 11:45:00
【问题描述】:

可能重复:
MySQL INSERT from a SELECT with PDO

我过去一直使用mysql_* 样式通过php 连接到mysql,我终于开始跋涉到PDO。过去我喜欢用mysql的INSERT INTO...SELECT...插入数据。好处是我可以稍后将列添加到表中,而无需完全占用与该表交互的所有其他表单。我的问题很简单。 . .是否有与此等效的 PDO?

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

【问题讨论】:

  • 你是在问是否有相当于INSERT和SELECT的PDO?
  • 您可以通过 PDO 向 MySQL 发送与使用 mysql_query() 相同的 SQL 命令,包括 INSERT ... SELECT
  • 我的问题是通过 PDO 引用 dev.mysql.com/doc/refman/5.0/en/insert-select.html 的使用。这与 Jocelyn 引用的帖子有很大不同。请参阅下面对保罗回答的回复。谢谢大家。

标签: php mysql select insert pdo


【解决方案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

【讨论】:

    【解决方案2】:

    查询不会改变。您可以使用以下内容:

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

    【讨论】:

    • 虽然这并没有直接回答问题,但我要求您及时回复并确认查询不会更改是有帮助的。问这个问题我应该做得更好,但我过去插入数据的方式是通过dev.mysql.com/doc/refman/5.0/en/insert-select.html,它不使用VALUES,而是使用SELECT。即使表中包含其他字段,这也允许仅插入到标识的字段中。让它工作的关键是只对包含在我准备好的语句中的字段使用 bindParam,不多不少。
    猜你喜欢
    • 2014-03-22
    • 1970-01-01
    • 2014-01-20
    • 2017-03-13
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多