任何人都可以帮我弄清楚这段代码有什么问题吗?

时间:2011-04-29 04:03:30

标签: php mysql error-handling 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:\wamp\www\login.php on line 14
Call Stack
#   Time    Memory  Function    Location
1   0.0008  370104  {main}( )   ..\login.php:0

( ! ) Notice: Undefined index: password in C:\wamp\www\login.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:\wamp\www\login.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:\wamp\www\login.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

我一直在拉着我的头发试图弄清楚这些背后的意义并修复它们,遗憾的是没有看到任何解决方案。任何人都可以帮忙吗?

4 个答案:

答案 0 :(得分:4)

POST不包含有问题的变量,或者您没有首先执行POST。

答案 1 :(得分:1)

尝试:

$count = mysql_numrows($data);

它表示你在期望资源的时候传递了mysql_numrows数组。

答案 2 :(得分:1)

它告诉你你引用的$ _POST值不存在。您是否在此页面上提交表单?如果是这样,请确保检查表单字段名称。如果不是 - 此脚本需要提交表单。

答案 3 :(得分:0)

这些行会导致“未定义的索引”警告。

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

当您向此脚本提交表单时,$_POST是一个包含所有表单元素的数组。在您的情况下,user_namepassworduser_type表单元素不存在,或者您没有提交表单。因此,阵列元素不存在。当您尝试从不存在的数组元素读取时,您会收到“未定义的索引”通知。

另一个警告是由这一行引起的:

$count = mysql_numrows($info);

您将$info数组传递给mysql_numrows。您应该从mysql_query传递结果资源。您应该将$data传递给mysql_numrows