我收到错误 - > sqlsrv_num_rows()期望参数1为资源
任何人都可以弄清楚编码有什么问题,我已经尝试了3个小时了
在此先感谢:)
<?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";
}
?>
<?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 :(得分:1)
sqlsrv_num_rows()期望参数1为资源
问题是$result
是错误的,原因是:
$sql="SELECT * FROM Login WHERE Username=$myusername and
Password=$mypassword";
此处Username
和Password
是字符串,您要与字符串进行比较,您需要将值包装在'
单引号中,如:
$sql="SELECT * FROM Login WHERE Username='".$myusername."' and
Password='".$mypassword."'";
注意:您的查询容易受到SQL注入攻击
答案 1 :(得分:0)
我在这里注意到两件事:
1)你在第4行有一个拼写错误,我想你错过了评论标记
而不是:
username and password sent from form
你的意思是:
// username and password sent from form
2)Mayank已经证明了第二个问题。您在SQL Query中有另一个错误,$ result变量返回FALSE而不是语句资源
您可以验证检查$ result是否等于FALSE,并为用户输出一些错误,如下所示:
if( $result === false ) {
die( print_r( sqlsrv_errors(), true));
}
查看this link了解详情。
最后请注意Mayank对SQL注入的看法。