sqlsrv_num_rows() 期望参数 1 是资源
sqlsrv_num_rows() expects parameter 1 to be resource
我得到一个错误 --> 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";
}
?>
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 />";
}
?>
sqlsrv_num_rows() expects parameter 1 to be resource
问题 $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) 你在第 4 行打错了,我想你错过了注释标记
而不是:
username and password sent from form
你的意思是:
// username and password sent from form
2) Mayank 已经回答了第二个问题。您在 SQL 查询中还有一个错字,并且 $result 变量返回 FALSE 而不是语句 resource
您可以验证检查 $result 是否等于 FALSE,并进一步为用户打印一些错误,如下所示:
if( $result === false ) {
die( print_r( sqlsrv_errors(), true));
}
查看 this link 了解更多信息。
最后请注意 Mayank 关于 SQL 注入的说法。
我得到一个错误 --> 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";
}
?>
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 />";
}
?>
sqlsrv_num_rows() expects parameter 1 to be resource
问题 $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) 你在第 4 行打错了,我想你错过了注释标记
而不是:
username and password sent from form
你的意思是:
// username and password sent from form
2) Mayank 已经回答了第二个问题。您在 SQL 查询中还有一个错字,并且 $result 变量返回 FALSE 而不是语句 resource
您可以验证检查 $result 是否等于 FALSE,并进一步为用户打印一些错误,如下所示:
if( $result === false ) {
die( print_r( sqlsrv_errors(), true));
}
查看 this link 了解更多信息。
最后请注意 Mayank 关于 SQL 注入的说法。