Здравствуйте, не пойму. Откуда ошибка. АААААААА. Уже 3 часа сижу, смотрю в "код" и вижу фигу. Ошибка: "sqlsrv_query() expects parameter 1 to be resource, boolean given in C:\OSPanel\domains\test\send.php on line 14" Сам "код": PHP: <?php $namesql="DESKTOP-VRUI3O1\SQLEXPRESS, 1433"; $arraysql = array("Database"=>"Test","UID"=>"Test","PSW"=>"1234"); $connect = sqlsrv_connect($namesql,$arraysql); if ($connect=false) { echo "string"; # code... exit(); } $user = $_POST['user']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE username = '$user' AND password = '$password'"; $result = sqlsrv_query($connect,$query) or die(print_r(sqlsrv_erros(),true)); $rows = 0; while ($rows = sqlsrv_fetch_array($result)) { $rows++; # code... } if ($rows == 1) { echo "string"; # code... } else{ echo "Login or Password not found!"; } ?> <form method="POST" accept=""> <input type="text" name="user"> <input type="password" name="password"> <input type="submit" name=""> </form>
Если действовать таким макаром, можно все ветвление убрать нафиг. Ничего не потеряете. Оставьте просто if ($connect) или делайте сразу if ($connect=sqlsrv_connect($namesql,$arraysql)). И на будущее, чтобы не совершать глупых ошибок, пишите константу в сравнениях перед операцией сравнения, а не после. --- Добавлено --- Наличие POST-параметров нужно проверять. Их значения – экранировать в запросе. Условие с паролем можно вынести из запроса и делать проверку после обычным сравнением. $rows = 0; и т.п. – тоже хрень! Делайте по той же схеме, что я выше показал: PHP: if ($rows = sqlsrv_fetch_array($result)) --- Добавлено --- Либо: PHP: if (($rows = sqlsrv_fetch_array($result)) && $rows['password']==$password)
@miketomlin второе либо не == а === Проверка еще на тип данных. Придет в пассворде булеан тип, что будем делать ? --- Добавлено --- PHP: $a = 'afasdf'; $b = true; if ( $a == $b )
У вас проблема в $result = mysqli_query($link, $query); , Вот будет правильный вариант! написания! Надеюсь помог.
Не злорадсвуйте. Все мы когда-то начинали. Я убил сутки на первое подключение к бд и писал кипятком, когда вывел массив.
@twim32, не клевещите. Я это написал, из-за того что пост ArtemPetesburg'а неожиданно появился перед моим, притом что разница между постами больше восьми часов.