【问题标题】:Undefined offset: -1 PDO in for loop未定义的偏移量:for 循环中的 -1 PDO
【发布时间】:2015-07-20 14:25:44
【问题描述】:

我使用 pdo 连接 mysql 数据库并使用 PDO::FETCH_ASSOC 函数..获取 ASSOC 数组..

但是当运行代码时,会在多行中给出这个错误。

未定义的偏移量:-1 或未定义的偏移量:61

if($pays[$i]['price'] < $pays[($i-1)]['price'])

elseif($pays[$i]['price'] > $pays[($i-1)]['price'])

.$pays[$i]['price'].

我的完整代码

<?php

$params        = null; //or any params
$mrkfPDO       = new PDO('mysql:host=localhost;dbname=usd', 'root', '', array(
    PDO::ATTR_PERSISTENT => true,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
));
$mrkfStatement = $mrkfPDO->prepare("SELECT price FROM uds limit 0,100");
$mrkfStatement->execute($params);
$pays = $mrkfStatement->fetchAll(PDO::FETCH_ASSOC);

for ($i = 0; $i <= count($pays); $i++) {

    $color = 'black';

    if ($pays[$i]['price'] < $pays[($i - 1)]['price'])
        $color = "red";
    elseif ($pays[$i]['price'] > $pays[($i - 1)]['price'])
        $color = 'green';
    else
        $color = 'black';

    echo "<tr>
                        <td>
                            <span style='color: $color'>" . $pays[$i]['price'] . "</span>
                        </td>
                      </tr>";
}

?>

【问题讨论】:

  • 由于$i = 0 in your for loop 你得到了那个错误。开始$i =1

标签: php mysql


【解决方案1】:

问题是$i = 0。第一次$i = 0 hens $pays[($i-1)]['price'] 给出-1 索引,这总是一个偏移错误。像下面这样:-

for($i=1; $i<count($pays); $i++) // see the change

【讨论】:

    【解决方案2】:

    你循环

            for($i=0; $i<=count($pays); $i++)
    

    $i=0开始。

    那你试试这个:

              if($pays[$i]['price'] < $pays[($i-1)]['price'])
    

    有一个$pays[($i-1)]。那是你的未知索引-1 ($i-1 (or 0-1 for the first loop))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多