PHP mysql获取数组错误

时间:2014-02-24 05:46:14

标签: php mysql

  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);
?>

4 个答案:

答案 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

您需要像这样更改代码..

下面的代码只是一个例子,告诉你你做了什么实际上是错的。不要使用此代码!您首先需要迁移到旁注部分为您提供的最新数据库API。

$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_*)扩展名,将来会删除它。相反,应使用MySQLiPDO_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