2012-01-10 83 views
2

所以我的代碼是這樣..的mysql_query()預計參數1爲字符串,資源給予

<?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爲字符串,資源給予」和我不知道如何解決它。

大家能幫幫我嗎?

+5

我最喜歡的一點:'$用戶名=(!isset($ _ POST [ '名']));' – 2012-01-10 15:56:18

+1

作爲@ ÁlvaroG.Vicario指出。 '$ username =(!isset($ _ POST ['username']));'將返回true或false。 – 2012-01-10 16:02:49

+1

我最喜歡的一點:像@ÁlvaroGonzález這樣的無用的人批評並沒有解釋他們爲什麼要扮演smartass。 應該是permaban :) – 2016-10-09 19:22:04

回答

6

這是你的問題:

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

$result = mysql_query($query); 

您正在運行的第一行,它返回一個「資源」的查詢結果的查詢。然後在下一行嘗試將該資源用作另一個查詢以再次運行。你不需要第二行,$result可以設置在第一行。

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

這會給你你想要的結果。

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); 
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])."' 
     )"; 
?> 
2

你的問題是在這裏$query = mysql_query ("SELECT * FROM tb_funcionario WHERE username='$username' and password='$password'");

,那麼你正在運行mysql_query($query)和它試圖運行命令針對第一條語句返回的結果集,而不是實際應該使用的字符串是

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'";); 
相關問題