2016-09-19 13 views
0

私は固執しています...いくつかの助けを願います。mysqli_num_rowsファンクション

私はこの状況に問題があります。

警告:mysqli_num_rows()は、パラメータ1がmysqli_result、ブール値がC:\ xamppであることを想定しています。次のエラーメッセージが表示されます。 \ htdocsに\ registracija \ここ48

ライン上のindex.phpを私のコードです:

if ($password_form==$repassword_form) { 

    $user=mysqli_query(
     $con, 
     "SELECT * FROM users, 
      WHERE username=username_form 
      OR email=email_form 
     "); 
    $counter=mysqli_num_rows($user); 
    if ($counter==0) { 

     if (move_uploaded_file($temporary_name, $path)) { 
      echo "YES!<br />"; 
      }  
      else { 
      echo "NO!<br />"; 
    }  
    } 
    else { 
     echo "ERROR!<br />Some Message!<br />"; 
    } 

} 
else { echo "ERROR!<br />Some Message!<br />"; 
} 
} 
else { 
?> 
+1

あなたのクエリは失敗しました。あなたのコードは何も間違っていると仮定しています。今はあなたが仮定した結果に苦しんでいます。 –

+0

それは非常に悪いチュートリアルのように見えます。いずれにしても、mysqlエラーをチェックしてからSQLクエリーを書き直すべきです。 –

答えて

0

クエリに誤りがあり、この変更:削除するには、このへ

"SELECT * FROM users, 
     WHERE username=username_form 
     OR email=email_form 
    " 

"SELECT * FROM users 
     WHERE username = '$username_form' 
     OR email = '$email_form' 
    " 

あなたのクエリが失敗している、そして、あなたがしようとしている:カンマ:あなたの最後のクエリは、おそらく次のようになりますので、また

"SELECT * FROM users 
     WHERE username=username_form 
     OR email=email_form 
    " 

、username_formとemail_formは、おそらく文字列のように見えますこれに対して、操作mysqli_num_rows()を実行する。

あなたは強くSQLインジェクションを防ぐために準備されたステートメントを検討する必要があります。

$stmt = $db->prepare("SELECT * FROM table WHERE username=:un AND email=:em"); 
$stmt->execute(array(':un' => $username_form, ':em' => $email_form)); 
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 

は、この優れた記事hereからSQLインジェクションについてお読みください。

+0

UVを保証するには、関連する変数に1ドルまたは2を追加することもできます。 – RiggsFolly

+1

おそらくこれらの変数の周りの一重引用符は、ほとんど間違いなく「テキスト」です – RiggsFolly

+0

いいえ私はドルの追加を行います – RiggsFolly