2017-07-04 2 views
0

ich eine Fehlermeldung angezeigt werden ->sqlsrv_num_rows() erwartet Parameter 1 Ressource sein
jemand herausfinden kann, was ist falsch mit der Codierung, ive 3 Stunden versucht jetzt dank im Voraus :)sqlsrv_num_rows() erwartet 1 Parameter Ressource

<?php 
include("config.php"); 

username and password sent from form 
$myusername=htmlspecialchars($_POST[username]); 
$mypassword=htmlspecialchars($_POST[password]); 



$sql="SELECT * FROM Login WHERE Username=$myusername and 
    Password=$mypassword"; 
    $result=sqlsrv_query($conn,$sql); 
    $count=sqlsrv_num_rows($result); 

    if($count==1){ 
    header("location: something"); 
    } 
else { 
    echo "Wrong Username or Password"; 



} 
?> 

CONFIG.PHP

<?php 
    $serverName = ''; 
    $uid = ''; 
    $pwd = ''; 
    $databaseName = ''; 
    $connectionInfo = array("UID"=>$uid,        
        "PWD"=>$pwd,        
        "Database"=>$databaseName); 

    $conn = sqlsrv_connect($serverName, $connectionInfo); 
     if($conn) { 
      echo "Connection established.<br />"; 
     }else{ 
       echo "Connection could not be established.<br />"; 

     } 
     ?> 
+0

"$ result" ist wahrscheinlich falsch, was bedeutet, dass Ihre Abfrage fehlgeschlagen ist, was wahrscheinlich ist, wenn das tatsächlich Ihre SQL-Abfrage ist. –

+0

Mögliches Duplikat von [SQLSRV \ _NUM \ _ROWS-Fehler] (https://stackoverflow.com/questions/22858327/sqlsrv-num-rows-error) – alalp

Antwort

1

sqlsrv_num_rows() erwartet Parameter 1 zu sein Ressource

Die Frage ist $result falsch ist, und es ist wegen:

$sql="SELECT * FROM Login WHERE Username=$myusername and 
    Password=$mypassword"; 

hier Username und Password Strings sind und Sie mit Zeichenfolge vergleichen Sie die Werte in ' Seng Anführungszeichen zu wickeln haben wie:

$sql="SELECT * FROM Login WHERE Username='".$myusername."' and 
    Password='".$mypassword."'"; 

Hinweis: Ihre Anfrage ist anfällig für sQL-Injektionen

+0

OMG DANKE! Was könnte ich tun, um SQL-Injektionen zu verhindern? – Elo97234c

+0

Überprüfen Sie dies: https://stackoverflow.com/questions/16202006/prevention-of-sql-injection-with-php-for-sql-server-and-without-pdo –

0

Ich habe Hinweis 2 Dinge hier:

1) Sie haben einen Tippfehler in Zeile 4, ich glaube, Sie den Kommentar Markup

statt verpasst:

username and password sent from form 

Sie nach:

// username and password sent from form 

2) Mayank bereits diese zweite Ausgabe anwsered. Sie haben eine andere Tippfehler bei SQL Query und das $ result Variable zurückgibt FALSE anstelle einer Anweisung Ressource

Sie überprüfen können, dass, wenn $ result Überprüfung auf FALSCH gleich ist, und darüber hinaus einige Fehler für den Benutzer drucken, wie folgt aus:

if($result === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

Überprüfen Sie this link für weitere Informationen.

Abschließend was Mayank über SQL-Injektion sagte.

Verwandte Themen