Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in C:\xampp\htdocs\arun\login.php on line 9
代码:
$db_select = mysql_select_db('my_db', $con);
$username = $_GET['username'];
$password = $_GET['password'];
$role = $_GET['role'];
$result = mysql_query("Insert into table1(Username,Password,Role) values (Username='$username', Password='$password',Role='$role') ",$con);
$row = mysql_fetch_array($result);
if ( mysql_error() )
{
die ( mysql_error());
}
$row_PK = mysql_fetch_assoc($row);
mysql_close($con);
?>
答案 0 :(得分:1)
替换
$result = mysql_query("Insert into table1(Username,Password,Role) values (Username='$username', Password='$password',Role='$role') ",$con);
与
$result = mysql_query("Insert into table1(`Username`,`Password`,`Role`) values ('$username', '$password','$role') ",$con);
您不必像以前那样将值分配给INSERT
查询中的列。只需映射上面显示的值。
除了上述问题......解析你的代码..
您的代码的主要问题是您正在执行INSERT
但是您期望结果集,因为您已经完成了错误的SQL SELECT
。
您需要像这样更改代码..
$db_select = mysql_select_db('my_db', $con);
if(isset($_GET['username'],$_GET['password'],$_GET['role']))
{
$username = mysql_real_escape_string($_GET['username']);
$password = mysql_real_escape_string($_GET['password']);
$role = mysql_real_escape_string($_GET['role']);
$result = mysql_query("Insert into table1(`Username`,`Password`,`Role`) values ('$username', '$password','$role') ",$con);
if (!$result)
{
die (mysql_error());
}
else
{
echo "Record Inserted";
}
mysql_close($con);
}
<强> SideNote
强>
从PHP 5.5.0开始,不推荐使用(mysql_*
)扩展名,将来会删除它。相反,应使用MySQLi
或PDO_MySQL
扩展名。切换到PreparedStatements
甚至可以更好地抵御SQL注入攻击!
答案 1 :(得分:1)
对于INSERT查询,返回值不是资源,成功时为TRUE,错误时为FALSE。
为SELECT,SHOW,DESCRIBE或EXPLAIN查询返回资源。
答案 2 :(得分:0)
这是您的解决方案将您的查询更改为
$result = mysql_query("Insert into table1(Username,Password,Role) values ('$username', '$password','$role') ",$con);
答案 3 :(得分:-1)
你的查询应该是这样的
$result = mysql_query("Insert into table1(Username,Password,Role) values ('$username', '$password','$role') ",$con);
注意: mysql_*
已弃用mysqli_*
或PDO