2012-05-19 2 views
1

Я только начинаю делать сайт. В верхней части страницы регистрации есть панель поиска, где вы можете найти существующего пользователя. После того, как пользователь будет найден и выбран, он автоматически заполнит значения в регистрационной форме. Оттуда вы можете обновить информацию о пользователе. Или создайте нового пользователя. По какой-то причине, независимо от того, какие значения я вставляю, он вызывает функцию обновления, а не создает нового пользователя. Любая помощь будет оценена. благодаря!Не удается обновить таблицы в MySQL с помощью PHP

//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 
+0

Помните (ESPECIALLY при выполнении обновлений и удалений), чтобы фильтровать и удалять любые предоставленные данные от пользователя, включая данные о столбце, get, server, session и cookie, чтобы спроектировать себя из SQL-инъекции. –

ответ

1

В ответ на @jeroen, этот код должен помочь @ylhtravis:

if (mysql_num_rows($exist_result)) { 
    //error code here 
} else { 
    //continue 
} 
1

Проблема заключается в том, что вы тестируете для $exist_result и что всегда будет возвращать true до тех пор, как запрос является действительным (он возвращает ресурс и это оценивается как истина).

Вам нужно подсчитать строки в $exist_result и проверить на 0 строк.

Я бы рекомендовал переход на PDO/подготовленных заявлений, но в вашем случае вы можете использовать:

mysql_num_rows($exist_result); 
+0

Спасибо! Я не знал, что он всегда вернется. Я только начинаю изучать php с ресурсных сайтов. это было так весело! И вы, ребята, очень полезны и удивительны! Еще раз! – ylhtravis

+0

@ylhtravis Добро пожаловать. Обратите внимание, что, строго говоря, он не возвращает 'true', он возвращает ресурс. – jeroen

+0

ohhh, у меня есть вопрос, если вы не возражаете. он всегда возвращает a'Resource # '. Что именно означает это число? – ylhtravis

Смежные вопросы