これに対する有用な解決策をまだ見つけることができなかったので、私は発砲します. 検証スクリプトを実行しようとすると、常にこのエラーが発生します。
私たちはさまざまな学校のデータベース管理システムを運用しており、その学校の最初のユーザー (いわばスーパー管理者) が登録すると、その学校全体のデータを収集します。その学校の後続の職員が登録すると、登録エントリがデータベースと照合され、新しい登録ツリーが正しい職員にリンクされます (もちろん、該当する場合)。
スタッフのメンバーが同じ姓/イニシャルを持っている場合にエラーを回避するために (もちろん、その可能性は非常に高いです)、似たようなイニシャル/姓の組み合わせを持つ人が多数発生するたびに自動的に起動する検証スクリプトに取り組んでいます.
$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
ここで本当に明白な何かを見逃しているように感じますが、かなり長い間これにこだわっています。私が間違っていることを手伝ってくれる人はいますか?どうもありがとう!