PHP не показывает никаких ошибок, последние 2 еще, если операторы работают хорошо, но не первый - PullRequest
0 голосов
/ 26 июня 2018
<?php 
  $db = mysqli_connect('localhost', 'username', 'password', 'database');
  $username = "";
  $password = "";
  $regcode = "";
  if (isset($_POST['submit'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $regcode = $_POST['regcode'];

    $sql_R = "SELECT * FROM regcode WHERE regcode='$regcode'";
    $sql_R2 = "SELECT * FROM staff WHERE regcode='$regcode'";
    $res_R2 = mysqli_query($db, $sql_R2);
    $res_R = mysqli_query($db, $sql_R);

    if ((mysqli_num_rows($res_R) > 0) && (mysqli_num_rows($res_R2) < 1)){
    $query = "INSERT INTO staff (username, password, regcode)
                  VALUES ('.$username.', '.$password.', '".$regcode."')";
           $results = mysqli_query($db, $query);
           echo file_get_contents("register.html");
           exit();
    }else if(mysqli_num_rows($res_R2) > 0){
    $regcode_error = "Reg.Code already used by someone, please inform administrator for further information.";          
    }else{
    $regcode_error = "Reg.Code doesn't exists, please inform Administrator for further information.";         
    }
  }
?>

Вот что произошло: я пытаюсь разрешить моей системе распознавать код, называемый «regcode», из базы данных, поэтому, когда проверенные пользователи смогут зарегистрировать свою учетную запись, пользователь не сможет зарегистрировать свою учетную запись, если regcode используется в базе данных персонала или когда код regcode отсутствует в базе данных regcode, проблема заключается в следующем: - Моя база данных не добавила новую информацию после проверки. - Я пробовал другой способ, такой как проверка недопустимого кода regcode или его использование, и он хорошо работает, отображая сообщение об ошибке.

Я пытаюсь понять это как часы, и до сих пор не могу понять. Я новичок в php Кстати, спасибо за совет.

1 Ответ

0 голосов
/ 26 июня 2018

Эта строка неверна

VALUES ('.$username.', '.$password.', '".$regcode."')";

должно быть

VALUES ('$username', '$password', '$regcode'";

Вы конкатенировали, неправильно и там, где это не нужно, помните, что строки в двойных кавычках будут автоматически расширяться $variables

ПРИМЕЧАНИЕ. Ваш сценарий широко открыт для Атака SQL-инъекции Даже , если вы избегаете входов, это не безопасно! Используйте подготовленные параметризованные операторы в API MYSQLI_ или PDO

Вам было бы легче отлаживать себя, если бы вы включили код проверки ошибок. Добавить

ini_set('display_errors', 1); 
ini_set('log_errors',1); 
error_reporting(E_ALL); 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

в начало вашего скрипта. Это заставит любые mysqli_ ошибки создайте исключение, которое вы можете увидеть в браузере, и другие ошибки также будут видны в вашем браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...