2015-10-28 5 views
-1

создать страницу регистрации, но есть ошибкаКак вставить данные для входа для пользователя?

Notice: Undefined variable: statement in D:\xampp\htdocs\123\signup.php on line 35

его вставки в ошибки базы данных, но PHP файл шоу. Как его вставить в базу данных, но все же показать ошибку?

странице регистрации

<!doctype html> 
<html> 
    <head><title>ABU E-ADVISING</title> 
    <link rel="stylesheet" type="text/css" href="style.css" \> 
</head> 
<body> 
    <?php 

    $Username1 = $_POST['usr']; 
    $Pass1 = $_POST['pass']; 
    $Surname = $_POST['sur']; 
    $Othernames = $_POST['oname']; 
    $DOB = $_POST['dob']; 
    $email = $_POST['email']; 
    $Tel = $_POST['tel']; 
    $Add = $_POST['add']; 
    $Postcode = $_POST['postcode']; 



    $db = mysql_connect('localhost','root','ROOT'); 
    if (!$db) 
    { 
    print "<h1>Unable to Connect to MySQL</h1>"; 
    } 

    $dbname = 'adv'; 

    $btest = mysql_select_db($dbname); 

    if (!$btest) 
    { 
    print "<h1>Unable to Select the Database</h1>"; 
    } 
    $statement .= "insert into user (userName, Password, FName, LName, DOB,Email, Tele, Address, PCode) "; 
    $statement .= "values ("; 
    $statement .= "'".$Username1."', '".$Pass1."', 
    '".$Surname."','".$Othernames."','".$DOB."','".$Tel."', '".$Add."', 
    '".$Postcode."','".$email."'"; 
    $statement .= ")"; 
    $result = mysql_query($statement); 

    if ($result) 
    { 
    echo "<br>Author Added: ".$Surname.", ".$Othernames; 
    } else { 
     $errno = mysql_errno($db); 

     if ($errno == '1062') { 
     echo "<br>Author is already in Table: <br />".$mylastname.", 
    ".$myfirstname; 
     } else { 
     echo("<h4>MySQL No: ".mysql_errno($result)."</h4>"); 
     echo("<h4>MySQL Error: ".mysql_error($result)."</h4>"); 
     echo("<h4>SQL: ".$statement."</h4>"); 
     echo("<h4>MySQL Affected Rows: ".mysql_affected_rows($result)." 
    </h4>"); 
     } 

     print 'NotAdded'; 
    } 

?> 
    </body> 

SQL

CREATE TABLE IF NOT EXISTS `user` (
    `UID` int(11) NOT NULL, 
    `userName` varchar(70) NOT NULL, 
    `Password` text NOT NULL, 
    `FName` text, 
    `LName` text, 
    `DOB` text, 
    `Email` text, 
    `Tele` text, 
    `Address` text, 
    `PCode` text 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; 

Может кто-нибудь помочь?

+1

Пожалуйста, не используйте 'mysql_ *'] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php?RQ = 1); функции 'mysql_ * 'устарели, [устарели] (http://us3.php.net/manual/en/intro.mysql.php) и небезопасны. Используйте ['MySQLi'] (http://us3.php.net/manual/en/book.mysqli.php) или [' PDO'] (http://us3.php.net/manual/en/intro. pdo.php). Кроме того, вы широко открыты для [** SQL injection **] (https://www.owasp.org/index.php/SQL_Injection). –

+0

прекратите использовать mysql, я знаю, что это не связано с вашим вопросом, но было бы лучше для будущего, избегать использования mysql, идти для mysqli, pdo или любого другого. –

ответ

1

Вот где у вас есть ошибка:

$statement .= "insert into user (userName, Password, FName, LName, DOB,Email, Tele, Address, PCode) "; 

Вы конкатенации ранее необъявленную переменную строку.

Должно быть:

$statement = "insert into user (userName, Password, FName, LName, DOB,Email, Tele, Address, PCode) "; 
1

Обновить следующую строку

$statement .= "insert into user (userName, Password, FName, LName, DOB,Email, Tele, Address, PCode) "; 

Для

$statement = "insert into user (userName, Password, FName, LName, DOB,Email, Tele, Address, PCode) "; 

$x .= $y означает $x = $x . $y

Итак, если $x не задано перед этим заявлением, вы получите уведомление для второго $x (после =).


Не используйте mysql_*. Это устарело и небезопасно.

1

Вы пытаетесь добавить что-то после переменной $ заявления по линии 35.

$ оператор не был определен, и вы пытаетесь добавить к нему.

Попробуйте это.

<!doctype html> 
<html> 
    <head> 
     <title>ABU E-ADVISING</title> 
     <link rel="stylesheet" type="text/css" href="style.css" \> 
    </head> 
    <body> 
     <?php 
     $Username1 = $_POST['usr']; 
     $Pass1 = $_POST['pass']; 
     $Surname = $_POST['sur']; 
     $Othernames = $_POST['oname']; 
     $DOB = $_POST['dob']; 
     $email = $_POST['email']; 
     $Tel = $_POST['tel']; 
     $Add = $_POST['add']; 
     $Postcode = $_POST['postcode']; 

     $db = mysql_connect('localhost','root','ROOT'); 
     if (!$db) 
     { 
      print "<h1>Unable to Connect to MySQL</h1>"; 
     } 

     $dbname = 'adv'; 
     $btest = mysql_select_db($dbname); 

     if (!$btest) 
     { 
      print "<h1>Unable to Select the Database</h1>"; 
     } 

     $statement = "insert into user (userName, Password, FName, LName, DOB,Email, Tele, Address, PCode) "; 
     $statement .= "values ("; 
     $statement .= "'".$Username1."', '".$Pass1."', '".$Surname."','".$Othernames."','".$DOB."','".$Tel."', '".$Add."', '".$Postcode."','".$email."'"; 
     $statement .= ")"; 
     $result = mysql_query($statement); 

     if ($result) 
     { 
      echo "<br>Author Added: ".$Surname.", ".$Othernames; 
     } else { 
      $errno = mysql_errno($db); 

      if ($errno == '1062') { 
       echo "<br>Author is already in Table: <br />".$mylastname.", ".$myfirstname; 
      } else { 
       echo("<h4>MySQL No: ".mysql_errno($result)."</h4>"); 
       echo("<h4>MySQL Error: ".mysql_error($result)."</h4>"); 
       echo("<h4>SQL: ".$statement."</h4>"); 
       echo("<h4>MySQL Affected Rows: ".mysql_affected_rows($result)."</h4>"); 
      } 

     print 'NotAdded'; 
     } 
     ?> 
    </body> 

Update, отступом все правильно для вас, если вы узнаете это сами таким образом, это повышает производительность и читаемость!

Кроме того, я хотел бы предложить вам очистить ваш код немного в этом так:

<html> 
    <head> 
    </head> 
    <body> 
     <?php 
     if($bla == $bla) { 
      echo "bla = bla"; 
     } 
     ?> 
    </body> 
</html> 

Обратите внимание, как я отступы в каждый раз, когда я открываю либо новый тег или Inbetween {}

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