2011-11-28 100 views
0

我试图运行此代码创建一个简单的登录表单,并连接到数据库,我的代码的时候是错误在PHP连接数据库

<?php 
$avaialableuser=$_POST["username"]; 
$avaialablepass=$_POST["password"]; 
$login = mysql_connect("localhost","ahmed",""); 
if (!$login) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("login module",$login); 
$result= mysql_query("SELECT * FROM people"); 
while($row = mysql_fetch_array($result)) 
    { 
    if(($row['username']==$avaialableuser) && ($row['password']==$avaialablepass)){ 
echo "WELCOME"; 
} 

else 
echo "sorry your username or password entered is incorrect please try again"; 
} 
mysql_close($login); 
?> 
> 

我不断获取此错误[下午9时03分25秒] ahmed atwa:警告:mysql_fetch_array()期望参数1是资源,布尔在第11行给出C:\ xampp \ htdocs \ example \ login.php

任何人都可以请告诉我我做错了什么? 谢谢

+0

查询失败出于某种原因,这意味着$结果不是资源。好的做法是检查你的mysql_query是否成功。 – Julien

+0

你必须写你的mysql表 – misima

+0

你可以使用这个代码...$ result = mysql_query(“SELECT * FROM people”)或die(mysql_error()); – misima

回答

1

您与MySQL服务器的连接不成功。由于您检查了$login的值,因此我们可以假设mysql_select_db()语句失败或者查询不起作用。请检查您的数据库名称,然后重试。

为避免将来出现此类问题,请检查返回值mysql_select_db()mysql_query()

+0

还是失败某些其他原因查询(即表不存在) – nickb

+0

@nickb:是的,这是可能的,我更新了我的答案,以反映它。但是,在这种情况下,数据库名称(“登录模块”)可能是问题。 –

1

根据manualmysql_query返回false如果由于某种原因查询失败。

两种最常见的原因是:

  1. 查询本身是不正确
  2. 您不必执行查询的权限。

要缩小范围,应该尽可能引入错误检查,并在需要时放弃。在您的例子中,你有两种可能的情况是错误出现能够:

  1. mysql_select_db("login module",$login);
  2. $result= mysql_query("SELECT * FROM people");

双方的这两种情况,如果失败返回false。

编辑:
在这种情况下,问题是,你使用你的数据库名称的空间。为了使它工作,你必须用括号[]附上名称:

mysql_select_db("[login module]",$login); 
1

我不知道如果这是真的,但我认为,你不能在DB-名称中使用空间: 未能进行你的数据库名称是“login_module”?

mysql_select_db("login module",$login);

€DIT:你必须支付你的DB-名称中括号:

mysql_select_db("[login module]",$login);

+0

您可以在名称中使用空格,但必须附上它们。看到我的答案。 – Marcus

+0

哦,那就对了:)谢谢... – ninov