PHP: <?php header("Content-Type :text/html; charset = utf-8"); session_start(); include('config.php'); $_SESSION['reg'] = false; if(isset($_POST['username'])) { $username = $_POST['username']; if ($username == '') { unset($username); } } if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password); } } $username = stripslashes($username); $username = htmlspecialchars($username); $username = trim($username); $password = stripslashes($password); $password = htmlspecialchars($password); $password = trim($password); $result = mysqli_query($db,"SELECT id FROM users WHERE login=$username"); $myrow = mysqli_fetch_array($result); if (!empty($myrow['id'])) { exit ("Vabandame, sisestatud kasutajanimi on juba registreeritud, sisestage teine kasutajanimi."); } $result2 = mysqli_query($db,"INSERT INTO users (login,password) VALUES('$username','$password') "); $_SESSION['reg'] = true; echo "<a href='index.php'>back</a>"; ?> Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in X:\Server\htdocs\form\reg.php on line 32
пишу мысли: Ожидает параметр 1. Значит в него не попадает этот самый первый параметр. Нужно искать выше. что то не так с переменной $result PHP: $result = mysqli_query($db,"SELECT id FROM users WHERE login=$username"); ищем выше подключение к базе данных (переменную $db). Я плохо смотрю или её нет? И потом, если я не ошибаюсь, то нужно писать mysqli_fetch_assoc. Но тут могу ошибаться. Возможно работают оба варианта. --- Добавлено --- + я бы переменную $username взял бы в одинарные кавычки. '$username' вот так.
$db скорее всего в config.php, а mysqli_fetch_array, естественно, тоже работает. Просто что-то с $result
PHP: $result2 = mysqli_query($db,"INSERT INTO users (login,password) VALUES('$username','$password') "); в бд было pass а тут password еще кавычки поставил где выше говорили '$username' и еще в другом файле когда сменил <? ?> на <?php ?> все чудом заработало
Попробуйте для проверки: $result = mysqli_query("SELECT `id` FROM `users` WHERE login='$username'"); $myrow = mysqli_fetch_array($result);
Автор, на будущее, с вероятностью 99% это значит, что запрос прошел, но БД вернула ошибку. Чтобы это отладить, выведи на страницу или посмотри в дебаггере, если есть, свой сформированный SQL-запрос. Скопируй его и скорми базе напрямую. Увидишь, в чем беда. Либо, просто после места с ошибкой используй https://php.net/manual/ru/mysqli.error В идеале, конечно, написать или позаимствовать полноценный обработчик ошибок. Но пока и так сойдет.