Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询在生产上没有结果,但在开发上没有问题_Php_Mysql_Pdo - Fatal编程技术网

Php MySQL查询在生产上没有结果,但在开发上没有问题

Php MySQL查询在生产上没有结果,但在开发上没有问题,php,mysql,pdo,Php,Mysql,Pdo,在我的开发环境中,我在一个类中有一个静态函数,在这个类中,我可以检索表的数据列表并打印到屏幕上。它工作得很好。这是我的密码: public static function getList( $numRows=1000000, $order="name ASC" ) { $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD ); $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM posttypes O

在我的开发环境中,我在一个类中有一个静态函数,在这个类中,我可以检索表的数据列表并打印到屏幕上。它工作得很好。这是我的密码:

public static function getList( $numRows=1000000, $order="name ASC" ) {

    $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
    $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM posttypes ORDER BY " . mysql_real_escape_string($order) . " LIMIT :numRows";
    $stmt = $conn->prepare( $sql );
    $stmt->bindValue( ":numRows", $numRows, PDO::PARAM_INT );
    $stmt->execute();
    $list = array();

    while ( $row = $stmt->fetch() ) {
        $postType = new PostType( $row );
        $list[] = $postType;
    }

    //Now get total number of posts that match criteria
    $sql = "SELECT FOUND_ROWS() AS totalRows";
    $totalRows = $conn->query( $sql )->fetch();
    $conn = null;

    return ( array( "results" => $list, "totalRows" => $totalRows[0] ) );
}
但是,在我的生产环境中,我无法检索任何记录。但是如果我在phpMyAdmin中运行这个精确的查询,我会得到我想要的精确记录

不知道发生了什么事?这是我第一次设置生产环境。我用的是蓝色主机

更新: 好的,我通过删除mysql\u real\u escape\u字符串修复了它,但是我相信转义字符串更安全,但是这必须返回false并使SQL语句失败。感谢大家的帮助。

先进行简单测试:

  • 生产sql数据库是否与开发数据库匹配?看起来你和phpMyAdmin的关系很好 打开笔记本:剪切并通过PhpNyAdmin的成功查询。将其粘贴到笔记本文件中


    将生产程序中的查询剪切并粘贴到同一文件中,以验证两个查询是否相同。标点符号错误可能很难归类。

    听起来像是数据库连接问题。也许仔细检查一下你的主机/un/pw?

    更新:好的,我通过删除mysql\u real\u escape\u字符串修复了它,但是我认为转义字符串更安全,但这必须返回false并使SQL语句失败。谢谢大家的帮助

  • 这是一个复制品
  • 无论如何,这个函数在很多方面都是错误的
    • 从不从不从应用程序函数连接,但每个应用程序只连接一次,然后使用PDO类的单个实例,将其传递给函数
    • 1000000行太多了。一旦你忘记设置限制,你就会杀死你的服务器
    • ASC
      无论如何都不是字符串。这是一个语法关键字。因此,逃避其中的任何角色都是毫无用处的。尽管在具有默认凭据的本地服务器上,它会自行连接到服务器并返回相同的字符串,但在活动服务器上,它无法连接,因此返回false

  • $conn->setAttribute(PDO::ATTR\u EMULATE\u PREPARES,FALSE)
    (可能这是在dev服务器上的
    php.ini
    中配置的)您不能绑定限制,我很确定它会失败environment@ajreal:它在我的开发环境中运行良好,限制似乎没有问题。在任何情况下,我都尝试删除绑定,结果仍然相同。@eggyal:选中了php.ini,但该命令不存在。同样,我也试过这个命令。False提供了相同的结果,true提供了一个空白屏幕。这里没有连接问题。我没有提到但应该提到的是,我可以从用户界面向表中添加一条记录,并且我可以使用phpMyAdmin查看表中的记录,但无法获得返回结果。