PHP复制标记

PHP复制标记,php,Php,职员表 代码 从上面的代码中,我想检查标记是否重复 预期产量 0001,好的。 0002,不好。多个斯塔夫。 0003,好的。 0004,好的 但是,我得到另一个错误,如下所示: 未定义的偏移量:第X行play.php中的5。 我如何解决它 首先执行正确的查询 SELECT staffID FROM staff GROUP BY staffID HAVING COUNT(staffID) > 1 或者,如果您需要了解所有员工ID: SELECT staffID, COUNT

职员表

代码

从上面的代码中,我想检查标记是否重复

预期产量 0001,好的。 0002,不好。多个斯塔夫。 0003,好的。 0004,好的

但是,我得到另一个错误,如下所示: 未定义的偏移量:第X行play.php中的5。 我如何解决它


首先执行正确的查询

SELECT staffID
  FROM staff
  GROUP BY staffID
  HAVING COUNT(staffID) > 1
或者,如果您需要了解所有员工ID:

SELECT staffID, COUNT(staffID) as qty
  FROM staff
  GROUP BY staffID

只是更新您的代码,我认为您必须首先检查是否存在:

if (isset($staffID[$i]) && isset($staffID[$i+!])) {
    if($staffID[$i] == $staffID[$i+1])
    {
         $remark = "Not OK. Multiple staff ID selected.";
         $i++;
    }
    else
    {  
         $remark = "OK.";
    }
    $data[$i] = $staffID[$i].','.$remark.'<br />';
}

您将在这一行获得错误:

if($staffID[$i] == $staffID[$i+1])
例如,假设$num_rows变量为3。那么$staffID数组将具有索引0、1和2。但在这一行我注意到的是,一旦$I达到2,这是有效的,因为它小于3,你去做$I+1,等于3。如您所见,索引3超出了数组的界限

如果希望像编写的那样执行此操作,则for循环应如下所示:

for($i = 0; $i < $num_rows-1; $i++)

但是,有一种更好的方法,甚至不用做for循环。您可以在while循环中使用。或者正如Ignacio所指出的,您可以在SQL级别上完成这一切。

不是解决此问题的好方法。对此,应使用分组查询。 选择staffID,COUNTstaffID作为count 工作人员 按斯塔夫分组 计数大于1的

还有你的错误。是因为 如果$staffID[$i]==$staffID[$i+1]


在最后一次迭代中,$i等于4,$i+1等于5。但是$staffID数组没有这样的键的元素

首先,staffID必须是唯一的,从DB设置开始,你不能测试这个-第二:你应该将该值与所有其他值进行比较,而不仅仅是与下一个值进行比较-第三:最后一个值没有下一个值,所以它会给你一个错误
for($i = 0; $i < $num_rows-1; $i++)