Php sqlsrv_num_rows()希望参数1是资源
我得到一个错误->sqlsrv\u num\u rows期望参数1是资源 有人能找出编码的错误吗?我已经试了三个小时了 提前感谢:Php sqlsrv_num_rows()希望参数1是资源,php,html,sql,sqlsrv,Php,Html,Sql,Sqlsrv,我得到一个错误->sqlsrv\u num\u rows期望参数1是资源 有人能找出编码的错误吗?我已经试了三个小时了 提前感谢: <?php include("config.php"); username and password sent from form $myusername=htmlspecialchars($_POST[username]); $mypassword=htmlspecialchars($_POST[password]); $sql="SE
<?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
sqlsrv_num_rows期望参数1是资源
问题是$result为false,原因是:
$sql="SELECT * FROM Login WHERE Username=$myusername and
Password=$mypassword";
此处用户名和密码是字符串,要与字符串进行比较,必须将值用单引号括起来,如:
$sql="SELECT * FROM Login WHERE Username='".$myusername."' and
Password='".$mypassword."'";
注意:您的查询容易受到sql注入的攻击我注意到以下两点: 1您在第4行有一个输入错误,我想您错过了注释标记 而不是:
username and password sent from form
你的意思是:
// username and password sent from form
2 Mayank已经发布了第二期。SQL查询中还有另一个输入错误,$result变量返回FALSE,而不是语句资源
您可以验证检查$result是否等于FALSE,然后为用户打印一些错误,如下所示:
if( $result === false ) {
die( print_r( sqlsrv_errors(), true));
}
查看更多信息
最后,请注意Mayank关于SQL注入的说法。$result可能是false,这意味着您的查询失败,如果这是您的SQL查询,则很可能失败。OMG可能重复,谢谢!如何防止sql注入?请检查以下内容:
if( $result === false ) {
die( print_r( sqlsrv_errors(), true));
}