Intereting Posts

Регистрационный код PHP

В настоящее время я пытаюсь создать скрипт регистрации для ввода регистрационной информации в мою таблицу UserAccount. Ниже моя связь:

<?php //database preparation $usr = "username"; $pwd = "password"; //put your php password $host = "computing"; $db = $usr; $conn = mysqli_connect($host, $usr, $pwd, $db); if (!$conn){ echo "<p>server connection error: mysqli_connect_error()</p>"; } $_SESSION['conn'] = $conn; //database connection status transfer; ?> 

И вот регистрация у меня с трудом.

 <?php include "conn.php"; $email_address = $_POST['email_address']; $password = md5($_POST['password']); $f_name = $_POST['f_name']; $s_name = $_POST['s_name']; $insert = 'INSERT INTO UserAccount(email_address, password, f_name, s_name) VALUES("'.$email_address.'","'.$password.'","'.$f_name.'","'.$l_name.'")'; mysql_query($insert); ?> 

При вводе информации я получаю пустую страницу и никаких записей данных в таблицу, мне было интересно, почему?

Related of "Регистрационный код PHP"

У вас есть опечатка

mysql_query($insert); должен быть mysqli_query($insert);

Вы не можете делать запросы mysql на соединение mysqli.

Вы должны убедиться, что ваш запрос даже выполняется? Какова ошибка, возвращаемая вашим запросом? Пытаться

 mysqli_query($conn,$insert) or die(mysqli_error($conn)); 

Это скажет вам, почему данных нет. Хорошее время, когда вы перешли на MYSQLI или PDO

РЕДАКТИРОВАТЬ:

Также вы используете переменную $l_name которая ранее не была объявлена. В вашем запросе должно быть $s_name . Скорее всего, ваша таблица настроена так, чтобы НЕ принимать пустое значение для l_name, и это не так.

Никогда не используйте функции mysql_ таким образом! Шутки в сторону!

  • Вы рискуете инъекцией SQL , используя необработанные данные непосредственно в вашем запросе
    • кто-то может сформулировать вредоносный запрос, который может выявить или испортить ваши данные
  • Функции mysql_ * устарели от PHP 5.5!
    • они больше не поддерживаются!

Решение:

  • использовать подготовленные заявления
  • Использовать PDO
  • или использовать mysqli последовательно во всем приложении (как отмечали другие)

Из всего этого я бы предложил перейти к PDO:

 try { //open connection, this is different than in the old functions $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); //***running query //**step1: create statement $stmt = $dbh->prepare('INSERT INTO UserAccount(email_address, password, f_name, s_name) VALUES( :email, :password,:f_name,:l_name)'); //notice parameters prefixed with ':' //**step2: bind values (be sure to also check out the bindParameter() function too!) $stmt->bindValue(':email', $email_address); $stmt->bindValue(':password', $password); $stmt->bindValue(':f_name', $f_name); $stmt->bindValue(':l_name', $l_name); //**step3: exexcute statement $stmt->execute(); $dbh = null; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); } 

Попробуйте следующее, изменив одинарные и двойные кавычки:

 $insert = "INSERT INTO UserAccount(email_address, password, f_name, s_name) VALUES('".$email_address."','".$password."','".$f_name."','".$l_name."')"; 

Это хорошая практика! Страница будет пустой, но по крайней мере вы должны получить запись в таблице.

Также проверьте, должно ли имя базы данных $db быть таким же, как $usr ? Это верно?

 $db = $usr; 

Разве это не должно быть чем-то вроде

 $db = "databaseName"; 

Заключительная мысль:

Существует переменная переменной ключевого слова transfer; это выглядит смешно. Из-за установки отчетов / обработки ошибок php это может привести к ошибке, но не показывать / не сообщать об этом на пустой странице. Используйте echo в определенных местах в коде, чтобы увидеть, где он остановлен.

Если это будет $transfer; и должен ли он получить переменную?

Другая мысль состоит в том, что если у вас $_SESSION['conn'] то должен быть session_start(); сразу после открытия <?php . Это может привести к тому, что conn.php завершится с ошибкой, нарушив INSERT .