PHP注意:未定义的偏移量:1

时间:2014-04-09 18:17:10

标签: php mysql

我使用此代码使用PHP数组获取MySql结果:

$sql = 'SELECT * FROM ' . LOCATION . ' ORDER BY category ';
$r = $db->query ( $sql ) or error ('Critical Error', mysql_error () );

while ($ROW = $db->fetcharray($r))
{
     if ($ROW[1] == '') //line 15
          $ROW[1] = $ROW['subcategory'];
} 

fetcharray函数:

function fetcharray ($query_id)

    {
        if(!$query_id)
        {
            $query_id = $this->query_res;
        }

        if($query_id)
    {
        $id = (int) $query_id;

        $this->q_array[$id] = @mysql_fetch_array($query_id,MYSQL_ASSOC); // LINE 124
        return $this->q_array[$id]; 
    }

        else

        {
            return false;
        }
    }

我看到了这个错误:

Notice: Undefined offset: 1 in C:\xampp\htdocs\script\state.php on line 15

我改变if ($ROW[1] == '') to if (isset($ROW[1])),但我再次看到错误。

NOTE: i remove **MYSQL_ASSOC** from fetcharray function and fix error. i think my problem with fetcharray function how to fix this?

我如何修复此错误?

2 个答案:

答案 0 :(得分:2)

这不是你的问题的直接答案,但你为旧的和已弃用的函数实现了某种包装。

您应该使用MySQLiPDO

此外,您的编码风格也不一致。一旦你为变量使用小写字母,另一次使用大写字母。

而不是:

if ($ROW[1] == '') //line 15
          $ROW[1] = $ROW['subcategory'];

你应该使用:

if (!isset($ROW[1])) //line 15
          $ROW[1] = $ROW['subcategory'];

或者这个:

if (empty($ROW[1])) //line 15
          $ROW[1] = $ROW['subcategory'];

答案 1 :(得分:0)

在您的代码中:

if ($ROW[1] == '') //line 15
          $ROW[1] = $ROW['subcategory'];

您无需设置即可直接访问$ROW[1](以及评论中提到的$ROW[0])。这就是它失败的原因。如果数据库中列的名称是" 1"或" 0"毕竟,请尝试使用$ROW["1"] or $ROW["0"]