还没有找到一个有用的解决方案,所以我要开火了。每当我尝试运行验证脚本时,我都会遇到此错误。
我们为各个学校运行一个数据库管理系统,并在该学校的第一个用户注册时收集整个学校的数据(可以说是超级管理员)。当该学校的后续工作人员注册时,他们的注册条目随后会根据数据库进行检查,以将新注册人与正确的工作人员联系起来(当然,如果适用的话)。
为了避免在员工具有相同姓氏/姓名首字母时出现错误(这当然很有可能),我正在开发一个验证脚本,该脚本会在出现具有相似首字母/姓氏组合的人数时自动启动。
$sql=("SELECT `idStaff`, `Staff` FROM `mldb`.`staff`
WHERE `Staff` LIKE '%$in%$sn'");
$qu=mysqli_query($dbc,$sql);
id=mysqli_fetch_array($qu);
if (mysqli_num_rows($qu) > 1)
{
load ('duplication.php') ;
}
在复制页面上,打印了所有工作人员的完整循环(带有他们的全名和主题区域),用户可以在其中单击相应的名称。这些名称中的超链接重定向到验证脚本,如下所示:
{
echo '<p>We have found multiple entries with that name. Please verify who you are.</p>' ;
{
while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC))
{
echo '<br><a href="verification.php?id='.$row['idStaff'].
'"> ' . $row['Staff'] . ', ' . $_SESSION['School'] . ', '
. $_SESSION['SubjectArea'] . ' </a>' ;
}
}
下面是验证脚本,它(应该)更新注册用户表以将员工 ID 和员工全名添加到注册用户,这样他们就不会再显示为重复了。
if(isset($_GET['id'])) $id = $_GET['id'];
{
$s = "SELECT DISTINCT `Staff`
FROM `mldb`.`staff`
WHERE `idStaff` = $id" ;
$e=$_SESSION['Email'];
// This doesn't work - why? //
$q="UPDATE `mldbadmin`.`user`
SET `idStaff`='$id', `Staff`='$s'
WHERE `Email` = '$e' AND `idStaff` IS NULL";
$r=mysqli_query ($dbc, $q) ;
if (!$r)
{
die('Invalid query:' . mysqli_error($dbc));
}
else
{ header("location:confirmeduser.php") ; }
}
但是,当我运行此脚本时,我收到主题标题中显示的错误消息,我无法弄清楚它发生的原因 - 因为所有列都应该能够处理所有这些数据。
Invalid query:Data too long for column 'Staff' at row 1
我觉得我在这里错过了一些非常明显的东西,但我已经坚持了很长一段时间了。有没有人可以帮助我解决我做错的事情?非常感谢!