Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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
pdo_mysql在windows上崩溃PHP_Php_Mysql_Windows_Pdo_Crash - Fatal编程技术网

pdo_mysql在windows上崩溃PHP

pdo_mysql在windows上崩溃PHP,php,mysql,windows,pdo,crash,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_SCH

我在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);
$sql=“选择'TABLE\u NAME','TABLE\u ROWS`FROM”
. “`information\u schema`.`TABLES`其中`TABLE\u schema`=”
. “:schema和`TABLE_NAME`与`stf_%'不同””;
$stmt=self::$pdo->prepare($sql);
$stmt->bindParam(':schema',self::$settings['schema']);
$stmt->execute();
$tables=$stmt->fetchAll(\PDO::FETCH\u ASSOC);
$stmt->closeCursor();
未设置($sql,$stmt);
$return=[];
对于($i=0;$iprepare($sql);
$stmt->execute();
//此项在Windows中失败:
$return[$table][=$stmt->fetchAll(\PDO::FETCH\u ASSOC);
//我还尝试过在fetch中使用循环。
//他们工作了几排,然后崩溃了。
未设置($table、$sql、$stmt);
}
var_dump($返回);
发生的情况是,它获取特定模式中的表名,然后将这些表的所有内容拉入
$return
数组。当
fetchAll
失败时,我尝试了各种循环,从
foreach
while
for
,它总是导致PHP在某个点或另一点崩溃

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

当它失败时,我得到的确切信息如下:

HTTP/1.1200正常
日期: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
上次修改:
接受范围:字节
内容长度:0
X-UA-兼容:IE=edge
X-Content-Type-Options:nosniff
保持活动状态:超时=5,最大=99
连接:保持活动状态
内容类型:text/html;字符集=UTF-8

因此我一直没能弄明白

从本质上说,我正试图采用一个写得很糟糕的旧模式,并以符合我们新模式的方式在PHP中组织它。因此,我可以对某个数据段执行一次调用,并独立于数据库使用旧模式还是新模式来获取它。所以基本上是向后兼容

无论如何,这里有一个链接,指向我使用相同代码从Debian服务器获得的数据。(证明它有效!)

我认为这可能与返回的数据量有关。因为每行数据较少的表会返回更多的行。我会检查一下,看看是否能计算出数据限制。我想这可能与返回的数据量有关。因为每行数据较少的表会返回更多的行。我会检查一下,看看是否能计算出数据限制。我想这可能与返回的数据量有关。因为每行数据较少的表会返回更多的行。我会检查一下,看看我能不能计算出数据限制。