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语句失败。感谢大家的帮助。先进行简单测试:
将生产程序中的查询剪切并粘贴到同一文件中,以验证两个查询是否相同。标点符号错误可能很难归类。听起来像是数据库连接问题。也许仔细检查一下你的主机/un/pw?更新:好的,我通过删除mysql\u real\u escape\u字符串修复了它,但是我认为转义字符串更安全,但这必须返回false并使SQL语句失败。谢谢大家的帮助
- 从不从不从应用程序函数连接,但每个应用程序只连接一次,然后使用PDO类的单个实例,将其传递给函数
- 1000000行太多了。一旦你忘记设置限制,你就会杀死你的服务器
无论如何都不是字符串。这是一个语法关键字。因此,逃避其中的任何角色都是毫无用处的。尽管在具有默认凭据的本地服务器上,它会自行连接到服务器并返回相同的字符串,但在活动服务器上,它无法连接,因此返回false李>ASC
$conn->setAttribute(PDO::ATTR\u EMULATE\u PREPARES,FALSE)
(可能这是在dev服务器上的php.ini
中配置的)您不能绑定限制,我很确定它会失败environment@ajreal:它在我的开发环境中运行良好,限制似乎没有问题。在任何情况下,我都尝试删除绑定,结果仍然相同。@eggyal:选中了php.ini,但该命令不存在。同样,我也试过这个命令。False提供了相同的结果,true提供了一个空白屏幕。这里没有连接问题。我没有提到但应该提到的是,我可以从用户界面向表中添加一条记录,并且我可以使用phpMyAdmin查看表中的记录,但无法获得返回结果。