mysql_query()期望参数1为字符串,给定资源

时间:2012-01-10 15:51:57

标签: php

所以我的代码就是这个......

<?php

$password=(!isset($_POST['password']));
$username=(!isset($_POST['username']));

    $username = mysql_real_escape_string($username);
    $password = mysql_real_escape_string($password);

$query = mysql_query ("SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'");

   $result = mysql_query($query);

   var_dump($result);

   $num_rows = $result->$num_rows;

    if ($num_rows)
    {
        echo "username already exist";
    }
    else
    {
     $query = "INSERT INTO tb_funcionario (nome_funcionario, username, password) VALUES (
    '$_POST[nome_funcionario]',
    '$_POST[username]',
    '$_POST[password]'
    )";;

       $result = mysql_query($query) or die (mysql_error());

    }


        mysql_query($query);
        mysql_close($bd_con);
?>

它总是给我“mysql_query()期望参数1是字符串,资源给定”我无法弄清楚如何解决它。

你能帮助我吗?

7 个答案:

答案 0 :(得分:6)

这是你的问题:

$query = mysql_query ("SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'");

$result = mysql_query($query);

您正在第一行上运行查询,该查询返回“资源”作为查询的结果。然后在下一行,您尝试使用该资源作为另一个查询再次运行。您不需要第二行,$result可以在第一行设置。

答案 1 :(得分:3)

您的代码中有一些不必要/错误的行,尤其是:

$query = mysql_query ("SELECT * FROM tb_funcionario WHERE 
    username='$username' and password='$password'");

$result = mysql_query($query);

我想你想写:

$query = "SELECT * FROM tb_funcionario WHERE 
    username='$username' and password='$password'";

$result = mysql_query($query);

答案 2 :(得分:2)

$query = mysql_query ("SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'");
$result = mysql_query($query);

不正确。您应该只将查询字符串分配给$query - 您正在执行的操作是运行查询一次,然后再次尝试将查询结果作为查询运行。你应该:

$query = "SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'";
$result = mysql_query($query);

可以为您提供所寻求的结果。

答案 3 :(得分:2)

您的问题在$query = mysql_query ("SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'");

然后你正在运行mysql_query($query)并且它正在尝试针对第一个语句返回的结果集运行命令,而不是像它实际应该是的字符串

答案 4 :(得分:1)

看看这个:

$query = mysql_query ("SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'");
$result = mysql_query($query);

将其更改为:

$query = "SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'");
$result = mysql_query($query);

答案 5 :(得分:1)

<?php
$query = "INSERT INTO tb_funcionario (nome_funcionario, username, password) VALUES (
        '".mysql_real_escape_string($_POST[nome_funcionario])."',
        '".mysql_real_escape_string($_POST[username])."',
        '".mysql_real_escape_string($_POST[password])."'
        )";
?>

答案 6 :(得分:1)

你的问题来自这些方面:

$query = mysql_query ("SELECT * FROM tb_funcionario WHERE username='$username' and    password='$password'");

$result = mysql_query($query);

您两次调用mysql_query()功能。

你可以这样做:

$sql = "SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'";

$result = mysql_query($sql);

或者是:

$result = mysql_query( "SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'"; );