SQL работает в php admin, но возвращает пустой результат в php-коде

Вот мой код:

  $usersql = "Select fab2_type from feesys_admin where adminname ='$_POST[username]' and adminemail = '$_POST[password]'";
$userresult = mysql_query($usersql) or die ("<h3>Error in query: $query. ".mysql_error()."</h3>");
$num_rows = mysql_num_rows($userresult);
if($num_rows > 0) {
if($userresult['fab2_type']=='Partner'){
}

Когда я запускаю оператор SQL для базы данных через PHP Admin, он работает нормально. Но он возвращается пустым в результатах здесь.

Я проверил, чтобы убедиться, что база данных подключается нормально.
Я проверил все орфографии
Количество строк возвращается правильно.
Нет синтаксических ошибок.
Когда я повторяю имя пользователя и пароль, а также оператор SQL, это все правильно.

Этот код работал, поэтому я понятия не имею, что здесь происходит не так.

0

Решение

Это потому, что вы не процитировали $_POST переменные массива правильно. У тебя есть $_POST[username] а также $_POST[password], Так должно быть $_POST['username'] а также $_POST['password'], Это заставляет PHP интерпретировать имя пользователя и пароль как константы.

Вот другой выстрел в вашем синтаксисе —

$usersql = "SELECT `fab2_type` FROM `feesys_admin` WHERE `adminname` ='".$_POST['username']."' AND `adminemail` = '".$_POST['password']."' ";

Вы можете еще больше сократить это, предварительно определив (как говорит Фред ниже).

$user = $_POST['username']; // please sanitize this
$pass = $_POST['password']; // please sanitize this
$usersql = "SELECT `fab2_type` FROM `feesys_admin` WHERE `adminname` ='".$user."' AND `adminemail` = '".$pass."' ";

Вы очень подвержены риску внедрения SQL-кода, если не очищаете вводимые пользователем данные.


Пароль связан

Я заметил, что вы можете хранить пароли в виде простого текста. Если это так, это крайне обескураживает.

Я рекомендовал вам использовать CRYPT_BLOWFISH или PHP 5.5 password_hash() функция.
Для PHP < 5.5 использовать password_hash() compatibility pack.

Кроме того, что касается внедрения SQL, использование mysqli с подготовленными заявлениями, или же PDO с подготовленными заявлениями, они намного безопаснее.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]