簡體   English   中英

具有相同名稱,不同ID的多個MySQL記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM