1

私はウェブサイトを作り始めたばかりです。登録ページの上部には、既存のユーザーを見つけることができる検索バーがあります。ユーザーが見つかって選択されると、登録フォームに値が自動的に入力されます。そこから、ユーザー情報を更新できます。または、新しいユーザーを作成します。何らかの理由で、入力した値に関係なく、更新関数のみを呼び出し、新しいユーザーを作成しません。どんな助けでも大歓迎です。ありがとう!

//Checks database to see if user exist by first name and last name
$check_exist ="SELECT * FROM staff WHERE firstname= '$firstname' AND     lastname='$lastname'";
$exist_result = mysql_query($check_exist);

echo "TEST exist_result:" .$exist_result ."<br>";

//Updates user if user already exist
if($exist_result)
{
    echo "Update function called... <br>";
    for($i = 0; $exist_row = mysql_fetch_array($exist_result); $i++)
    {
        //get the id number
        $ID = $exist_row['ID'];
    }

    //Updates staff table
    mysql_query("UPDATE staff SET position = '$position', firstname = '$firstname', lastname = '$lastname', 
    address = '$address', city = '$city', state = '$state', zipcode = '$zipcode', phone = '$phone', ss = '$ss'
    WHERE ID = '$ID'");

    //Updates login table
    mysql_query("UPDATE login SET ID = '$ID', position = '$position', username =     '$username', password = '$password', email = '$email' WHERE ID = '$ID'");

}

//Registers user if user doesn't exist in database
 else 
{
    echo "Insert function called...<br>";
    //Insert Staff information
    $insert_staff = "INSERT INTO staff (position, firstname, lastname, 
    address, city, state, zipcode, phone, ss) 
    VALUES ('$position','$firstname','$lastname','$address','$city',
    '$state','$zipcode','$phone','$ss')";
    mysql_query($insert_staff);

    //This gets the newly created unqiue ID number from staff and insert it into login table
    $get_id = mysql_query("SELECT * FROM staff
    WHERE firstname='$firstname' AND lastname ='$lastname'");
    $login_row = mysql_fetch_array($get_id);
    $eID = $login_row['ID'];

    //Insert Login information
    $query2 = "INSERT INTO login (ID, position, username, password, email)
    VALUES ('$eID', '$position','$username','$password','$email')";
    mysql_query($query2);
}

ここに私が得るエラーがあります:

Notice: Use of undefined constant myusername - assumed 'myusername' in         /Applications/MAMP/htdocs/cms/manager/insertReg.php on line 9

Deprecated: Function session_is_registered() is deprecated in /Applications/MAMP/htdocs/cms/manager/insertReg.php on line 9

Notice: A session had already been started - ignoring session_start() in /Applications/MAMP/htdocs/CMS/connectdb.php on line 8
TEST first name:ksdfjlsdkjf3242
TEST last name:lkjdslfkjdslkj
TEST exist_result:Resource id #5
Update function called... 

Notice: Undefined variable: ID in /Applications/MAMP/htdocs/cms/manager/insertReg.php on line 55

Notice: Undefined variable: ID in /Applications/MAMP/htdocs/cms/manager/insertReg.php on line 58

Notice: Undefined variable: ID in /Applications/MAMP/htdocs/cms/manager/insertReg.php on line 59
4

2 に答える 2

1

問題は、テストしていて、クエリが有効である限り$exist_result常に返されることです (リソースを返し、true と評価されます)。true

行を数えて、行$exist_resultを確認する必要があり0ます。

PDO /準備済みステートメントに切り替えることをお勧めしますが、あなたの場合は次を使用できます:

mysql_num_rows($exist_result);
于 2012-05-19T21:31:36.087 に答える
1

@jeroen への返信として、このコードは @ylhtravis に役立つはずです。

if (mysql_num_rows($exist_result)) {
    //error code here
} else {
    //continue
}
于 2012-05-19T21:34:06.600 に答える