2012-01-10 7 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が文字列であることを期待」と私はそれを解決する方法を理解できません。

yall help me?

+5

私のお気に入りのビット: '$ユーザ名は=(!ISSET($ _ POST [ 'ユーザー名']));' –

+1

として@ ÁlvaroG.Vicarioは指摘する。 '$ username =(!_ isset($ _ POST ['username']));'は 'true'か' false'を返します。 –

+1

私の好きなビット:@ÁlvaroGonzálezのような無用な人は批判し、なぜ彼らがスマートな行動をしているのかを説明してくれません。 Permabanでなければなりません:) –

答えて

6

これはあなたの問題です:

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

$result = mysql_query($query); 

あなたは、クエリの結果として、「資源」を返す最初の行にクエリを実行しています。次にすぐ次の行で、そのリソースを別のクエリとして使用して再度実行しようとします。 2行目は必要ありません。最初の行に$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に割り当てるだけで済みます。クエリーを一度実行してから、クエリーの結果をクエリーとして再度実行しようとしています。

これはあなたが求める結果を与えるはずです。この時

1

ルック:

$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)を実行しているし、コマンドを実行しようとしている:用

$query = mysql_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); 

あなたが二回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'";); 
関連する問題