可能重复:
PHP Error: mysql_fetch_array() expects parameter 1 to be resource, boolean given
我似乎无法弄清楚我做错了什么。因此,当我提交表单时,我收到警告错误和
注意:未定义的变量:第30行/Library/WebServer/Documents/ArturoLuna_Final/loginCheck.php中的dbusername
$username = $_POST['username'];
$password = $_POST['password'];
if($username&&$password)
{
require 'conn.php';
$query = "SELECT * FROM users WHERE username='$username'";
$result = $mysql->query($query) or die(mysqli_error($mysql));
$numrows = $result->num_rows;
if ($numrows!=0)
{
while($row = mysql_fetch_assoc($result))
{
$dbusername = $row['username'];
$dbpassword = $row['password'];
}
//check to see if they match!
if($username==$dbusername&&$password==$dbpassword)
{
echo "youre In!";
}
else
echo "incorrect password!";
}
else
die("that user is dead");
//echo $numrows;
}
else
echo ("Please Enter Username")
我可能做错了什么?
答案 0 :(得分:12)
更改
while($row = mysql_fetch_assoc($result))
到
while($row = $result->fetch_assoc())
您错过了函数名i
,并混淆了OO和程序样式代码,因此您混合了mysql_*
结果资源和mysqli_result
个对象。
答案 1 :(得分:6)
您将传统的PHP MySQL函数mysql_*
与MySQLi接口混合在一起。在这种情况下,mysql_fetch_assoc()
需要使用mysql_query()
创建资源句柄。
要检索正确的结果,您需要使用MySQLi的方法:
$row = $result->fetch_assoc();
虽然您正在考虑它,但您可能需要考虑使代码不易受MySQL注入攻击。在将其插入查询字符串之前,Properly escape 任何用户提供的输入,或者更好的是,使用MySQLi parameter binding facilities。