#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 и проверить их.