php - 通知 : Unknown: Skipping numeric key 1 in Unknown on line 0

标签 php

我有以下代码:

include 'includes/connect.php';
$sp= "clot";
$selectall = mysqli_prepare($connection, "SELECT Count FROM prices WHERE Category = ? ORDER BY ppu LIMIT 11");
mysqli_stmt_bind_param($selectall, 's', $sp);
mysqli_stmt_execute($selectall);
$resulttotal = mysqli_stmt_get_result($selectall);
$x=1;
while($row = mysqli_fetch_array($resulttotal, MYSQLI_ASSOC)){
$_SESSION[$x] = $row['Count'];
$x++;
}
$y=1;
while(isset($_SESSION[$y])){
    if($y==11){
        $_SESSION['nextstart'] = $_SESSION[$y];
        unset($_SESSION[11]);
    }
    else{
        echo($y);
        echo("<br>");
        echo($_SESSION[$y]);
        echo("<br>");
        $y++;
    }
}

输出预期的数字字符串 (1, 17, 2, 18...) 此错误消息(十次,使用键 1、键 2、键 3 等):

Notice: Unknown: Skipping numeric key 1 in Unknown on line 0

查找此错误,我能找到的唯一答案是将数组放入超全局会导致此错误。我不相信我把一个数组放进去,$row['Count'] 是一个字符串,不是吗?我在 stackoverflow 上找不到关于此错误的任何条目。

导致此错误的原因是什么,我应该如何解决? (显示的代码只是我使用我的数据库试验和规划无限分页的设计。)

最佳答案

PHP session 存储机制最初是围绕“注册”变量构建的,因此 $_SESSION 中的键必须是本身可以被视为变量的名称。

这意味着 $_SESSION[42] 是无效的,因为 $42 不是一个有效的变量名,而且由于 $foo[42]$foo['42'] 指的是同一件事,$_SESSION['42'] 也是无效的。

解决方案是在 session 变量上使用前缀(例如 $_SESSION['row_count_' . $x] = $row['Count'];)或将它们放入数组中,然后您可以稍后循环等(例如 $_SESSION['row_counts'] = array(); ... $_SESSION['row_counts'][$x] = $row['Count'];)

注意:此限制实际上是将 session 写入磁盘时使用的“序列化处理程序”的一部分,这就是错误没有上下文的原因(它们在 PHP 关闭时触发)。在当前版本的 PHP 中有一个设置 session.serialize_handler没有这个限制:

php_serialize is available from PHP 5.5.4. php_serialize uses plain serialize/unserialize function internally and does not have limitations that php and php_binary have. Older serialize handlers cannot store numeric index nor string index contains special characters (| and !) in $_SESSION. Use php_serialize to avoid numeric index or special character errors at script shutdown.

关于php - 通知 : Unknown: Skipping numeric key 1 in Unknown on line 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18797251/

相关文章:

php - 程序不执行任何操作

php - MySQLi 连接而不指定数据库

php - 按小时分组,然后正确排序 (22-23-0-1-2 ...)

php - Array_splice 充当 array_slice?

PHP - Base64 的替代品,结果更短?

php - 如何在 PHP 中将电子邮件附件保存到服务器?

php - 科学记数法在php中的显示

javascript - Angularjs 如何将选中的复选框的值发送到 .php?

php - 在没有全局 pdo 对象的情况下使此执行工作

php - 使用带有连字符的 extract()