pdo_mysql在Windows

时间:2015-06-03 14:42:56

标签: php mysql windows pdo crash

我在Windows上使用pdo_mysql时遇到了问题。 (还简要介绍了mysqli。) 它在我的Debian服务器上运行正常。但是,由于我的工作计算机设置了wamp或xampp服务器(两者都试过),我真的不能忽视仅限Windows的问题。

具体来说,这是我遇到问题的代码:

$sql  = "SELECT `TABLE_NAME`, `TABLE_ROWS` FROM "
      . "`information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = "
      . ":schema AND `TABLE_NAME` NOT LIKE 'stf_%'";
$stmt = self::$pdo->prepare($sql);
$stmt->bindParam(':schema', self::$settings['schema']);
$stmt->execute();
$tables = $stmt->fetchAll(\PDO::FETCH_ASSOC);
$stmt->closeCursor();
unset($sql,$stmt);
$return = [];
for ($i = 0; $i < count($tables); $i++) {
    $table = $tables[$i]['TABLE_NAME'];
    $rows = $tables[$i]['TABLE_ROWS'];
    $sql = "SELECT * FROM `{$table}`";
    $stmt = self::$pdo->prepare($sql);
    $stmt->execute();
    // This piece fails in Windows:
    $return[$table][] = $stmt->fetchAll(\PDO::FETCH_ASSOC);
    // I've also tried using loops with fetch.
    // They work for a few rows and then crash.
    unset($table,$sql,$stmt);
}
var_dump($return);

它会在某个模式中获取表的名称,然后将这些表的所有内容都提取到$return数组中。当fetchAll失败时,我尝试了各种循环,从foreachwhilefor的所有内容都会导致PHP在某些时候崩溃。

当某些表中某行数超过一行后,PHP会突然崩溃而不会在任何日志中产生任何错误。我将我的日志设置为最高调试级别,因为这是一个开发环境。

这正是我失败时所得到的:

  

HTTP / 1.1 200 OK
      日期:2015年6月3日星期三13:55:29 GMT
      服务器:Apache / 2.4.12(Win32)OpenSSL / 1.0.1l PHP / 5.6.8
      X-Powered-By:PHP / 5.6.8
      最后修改:
      Accept-Ranges:bytes
      内容长度:0
      X-UA兼容:IE =边缘
      X-Content-Type-Options:nosniff
      保持活跃:超时= 5,最大= 99
      连接:保持活力
      Content-Type:text / html; charset = UTF-8

由于这个原因,我无法弄明白。

基本上我正在尝试采用写得不好的旧模式,并以符合我们新模式的方式在PHP中组织它。因此,我可以对某个数据进行单个调用,并使其独立于数据库是使用旧的还是新的模式。所以...向后兼容,基本上。

无论如何,这里是我使用相同代码从Debian服务器获得的数据的链接。 (证明它有效!) http://deviousconcepts.com/

0 个答案:

没有答案