[英]Multiple MySQL records with same name, different id
對此可能會有一個簡單的答案,但是我無法一輩子都可以使用它。
我正在使用PHP和MySQL,並進行了以下設置:
$studentname = mysql_real_escape_string($_POST['sname']);
$studentnumber = mysql_real_escape_string($_POST['snumber']);
$course = mysql_real_escape_string($_POST['courseselect']);
$bike3 = mysql_query("SELECT stoodnumber FROM bikes505 WHERE stoodname='" . $studentname . "'");
$bikestoods = mysql_fetch_array($bike3);
while($row = mysql_fetch_array($stoodlistq))
{
$stoodentname = $row['stoodname'];
$stoodentnumber = $row['stoodnumber'];
//$coursename = $row2['coursename'];
//$coursecode = $row2['coursecode'];
if($studentname == $stoodentname && $studentnumber == $stoodentnumber){
//$success = 1;
//$success = "yupp";
//echo "SUCCESS, WE CAN REGISTER YOOOU!";
echo "<br>";
//echo "INSERT INTO " . $course . "";
switch($course){
case "Biking Safely":
if($studentnumber = $bikestoods[0] or $bikestoods[1]){
echo "Sorry, this student has already registered";
} else if($bikecurrent < $bikemax){
mysql_query("INSERT INTO bikes505 VALUES ('" . $stoodentname . "','" . $stoodentnumber . "')");
echo "Yay, successfully registered " . $stoodentname . " - " . $stoodentnumber . " for " . $course;
echo "<br>";
} else{
echo "Sorry, class is full!";
}
break;
...等等。 我遇到的唯一問題是,如果我有兩個同名學生,則列表中的第二個將回顯信息不正確。
例如,MySQL表具有“ stoodname”和“ stoodnumber”,並且如果表中的記錄都是“ Jimmy St.James”,“ 1010”和“ Jimmy St.James”,“ 1090”,那么它只會讓我注冊課程中的Jimmy 1010,而不是Jimmy 1090。
我只是通過驗證方式而已嗎? 還是我遺漏了一些明顯的東西? 起初,我以為只是因為我只使用了數組$bikestoods[0]
的第一項,所以我將其更改為$bikestoods[0] or $bikestoods[1]
,但它仍然不起作用。
根據評論,您將$stoodlistq
定義為:
$stoodlistq = mysql_query("SELECT * FROM stoodinfo");
以后,您使用以下代碼塊:
$studentname = mysql_real_escape_string($_POST['sname']);
$studentnumber = mysql_real_escape_string($_POST['snumber']);
...
while($row = mysql_fetch_array($stoodlistq)) {
...
if($studentname == $stoodentname && $studentnumber == $stoodentnumber){
該代碼中的while()
循環遍歷每條記錄,但是, if-statement
檢查POST變量。 POST變量構成“一個學生”的單個組合-因此,您將永遠只能獲得一個可以注冊的學生。
要解決此問題,您需要更新提交“學生姓名” /“學生編號”的表格以接受多個輸入- 或更新if-statement
以僅檢查學生的姓名(這可能會導致更不希望的情況)。
您正在查詢中尋找stoodname
。 當您執行此類操作時,以可重復的值執行此語句是不好的。 也許您希望他們使用用戶名和密碼登錄,或者使用您給他們提供的ID登錄,但是除非此處有人有更好的主意,否則我認為您不能使用該名稱。
$bikestoods = mysql_fetch_array($bike3);
僅引用bike3
查詢的第一個結果,並且僅具有2個cols:[0]和[stoodnumber]否[1]。 如果您要收集bike3中的所有ID,則必須一次詛咒結果。
while($stoodnumbers[] = mysql_fetch_array($bike3));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.