【问题标题】:PDO: Not running multiple queriesPDO:不运行多个查询
【发布时间】:2011-06-11 03:55:50
【问题描述】:

代码

DB Dump

index.php

问题

  • 从浏览器运行 index.php 应该不给你任何输出 给你一个 4 行的数组。 (问题
  • 直接执行sql语句到 数据库为您提供 4 行作为输出。(如预期)
  • 另外,运行一个更简单的查询,例如 SELECT * FROM company 在 index.php 为您提供正确的输出。(如预期的那样)

所以pdo连接没有问题,sql语句也没有问题,我仍然没有得到所需的输出。

PHP 版本:5.3.1 | MySQL 版本:5.1.41

【问题讨论】:

    标签: php sql mysql stored-procedures pdo


    【解决方案1】:

    就像上面已经提到的答案一样,这是一个安全问题。他们这样做是为了确保您不能在查询中插入“邪恶”值,例如'或 1=1;从用户中选择 *。我知道您正在使用准备好的语句,所以这永远不会发生,但据我所知 PDO_MySQL 仍然不允许这样做。 (较新的?)PDO_MYSQLND 驱动程序确实似乎允许这样做。

    据我所知,该驱动程序目前尚未准备好投入生产。猜猜您必须在两个查询中执行此操作,或者如果它们始终按特定顺序调用,您可以将其隐藏在存储过程中。

    【讨论】:

    • 我的第一个查询调用了一个创建临时表的存储过程。拆分为 2 个查询时我没有得到结果,因为我认为第二个查询无权访问临时表。
    • 为什么要调用存储过程来创建临时表,然后尝试从中进行选择?让存储过程完成所有工作 - 它创建临时表,填充它,然后从它返回您想要的数据。
    猜你喜欢
    • 2013-10-15
    • 2012-12-29
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多