Кто-нибудь может помочь мне выяснить, что не так с этим кодом?

#php #mysql #error-handling #phpmyadmin

#php #mysql #обработка ошибок #phpmyadmin

Вопрос:

 <?php
$con = mysql_connect("localhost", "root", '');

if (!$con)
{
    die('Cannot make a connection');
}


mysql_select_db('yumbox_table', $con) or die('Cannot make a connection');



$username = $_POST['user_name'];
$password = $_POST['password'];
$type = $_POST['user_type'];

$data = mysql_query("SELECT * from users ") or die(mysql_error());

$info = mysql_fetch_array($data);

$count = mysql_numrows($info);

if ($count==1)
{
    echo ("Success!!");
}
else 
{
    echo ("BIG FRIGGIN FAILURE!!");
}

mysql_close($con);
?>
  

Всякий раз, когда я пытаюсь запустить этот код, я получаю эти большие красивые сообщения об ошибках:

 ( ! ) Notice: Undefined index: user_name in C:wampwwwlogin.php on line 14
Call Stack
#   Time    Memory  Function    Location
1   0.0008  370104  {main}( )   ..login.php:0

( ! ) Notice: Undefined index: password in C:wampwwwlogin.php on line 15
Call Stack
#   Time    Memory  Function    Location
1   0.0008  370104  {main}( )   ..login.php:0

( ! ) Notice: Undefined index: user_type in C:wampwwwlogin.php on line 16
Call Stack
#   Time    Memory  Function    Location
1   0.0008  370104  {main}( )   ..login.php:0

( ! ) Warning: mysql_numrows() expects parameter 1 to be resource, array given in C:wampwwwlogin.php on line 22
Call Stack
#   Time    Memory  Function    Location
1   0.0008  370104  {main}( )   ..login.php:0
2   0.0157  380104  mysql_numrows ( )   ..login.php:22
  

Я рвал на себе волосы, пытаясь понять смысл, стоящий за этим, и исправить их, и, к сожалению, не видел никаких решений. Может ли кто-нибудь там помочь?

Комментарии:

1. Я полагаю, что это $_POST переменная .. убедитесь, что название полей ввода в вашей форме совпадает с именем, которое вы используете в своем $_POST

Ответ №1:

Либо POST не содержит рассматриваемых переменных, либо вы вообще не выполняете POST.

Комментарии:

1. Точно. Вы должны использовать isset($_POST['user_name'], $_POST['password'], $_POST['user_type']) перед их назначением.

Ответ №2:

попробуйте:

 $count = mysql_numrows($data);
  

здесь говорится, что вы передаете массив mysql_numrows, когда он ожидает ресурс.

Ответ №3:

Он сообщает вам, что значения $ _POST, на которые вы ссылаетесь, не существуют. Вы отправляете форму на эту страницу? Если да, убедитесь, что вы проверили имена полей вашей формы. Если нет — этому скрипту нужна форма отправки в него.

Ответ №4:

Эти строки вызывают предупреждения «неопределенный индекс».

 $username = $_POST['user_name'];
$password = $_POST['password'];
$type = $_POST['user_type'];
  

Когда вы отправляете форму в этот скрипт, $_POST создается массив, содержащий все элементы формы. В вашем случае элементы формы user_name , password и user_type не существовали, или вы не отправляли форму. Таким образом, элементы массива не существуют. При попытке чтения из несуществующего элемента массива вы получаете уведомление «Неопределенный индекс».

Другое предупреждение вызвано этой строкой:

 $count = mysql_numrows($info);
  

Вы передаете $info массив в mysql_numrows . Вы должны передавать ему ресурс результата из mysql_query. Вы должны передавать $data в mysql_numrows .

Комментарии:

1. используйте «print_r ($_POST)», чтобы просмотреть все переменные POST и проверить их.