SQL - Select 未检索到结果
SQL - Select doesn't retrieve results
我正在使用 sqlsrv_num_rows
来检查数据库中是否存在用户。
当我在我的数据库中 运行 查询时,我得到了 1 个结果,但是在我的 PHP 中我没有得到任何结果(echo
不打印任何事物)。这是为什么?
$query = "SELECT TOP 1 id, tourOp FROM users WHERE (valid = 1) AND (email = '".trim($_POST['email'])."') AND (password = '".trim($_POST['password'])."')";
$stmt = sqlsrv_query( $conn, $query);
echo "num: ".sqlsrv_num_rows( $stmt );
if (!sqlsrv_num_rows( $stmt )) {
return (false);
} else {
}
示例查询
SELECT TOP 1 id, name FROM users WHERE (valid = 1) AND (email = 'roi@some_email.com') AND (password = '8521')
我正在使用 PHP 和 MSSQL。
解释:
- 函数
sqlsrv_num_rows()
需要客户端、静态或键集游标,并且 return false
如果您使用前向游标或动态游标(默认游标是向前光标)。使用额外的 $options
参数执行 sqlsrv_query()
并使用 "Scrollable" => SQLSRV_CURSOR_KEYSET
设置适当的游标类型
- 使用参数化语句。函数
sqlsrv_query()
同时进行语句准备和语句执行,可用于执行参数化查询。
- 如果要检查结果集是否有一行或多行,可以使用
sqlsrv_has_rows()
。
示例,基于您的代码:
<?php
$query = "
SELECT TOP 1 id, tourOp
FROM users
WHERE (valid = 1) AND (email = ?) AND (password = ?)";
$params = array(trim($_POST['email']), trim($_POST['password']));
$options = array("Scrollable" => SQLSRV_CURSOR_KEYSET);
$stmt = sqlsrv_query( $conn, $query, $params, $options);
if ($exec === false){
echo print_r( sqlsrv_errors());
echo "<br>";
return (false);
}
$count = sqlsrv_num_rows($stmt);
if ($count === false) {
echo print_r( sqlsrv_errors());
echo "<br>";
return (false);
} else {
echo "num: ".$count;
}
?>
备注:
不要以纯文本形式发送用户凭据。
我正在使用 sqlsrv_num_rows
来检查数据库中是否存在用户。
当我在我的数据库中 运行 查询时,我得到了 1 个结果,但是在我的 PHP 中我没有得到任何结果(echo
不打印任何事物)。这是为什么?
$query = "SELECT TOP 1 id, tourOp FROM users WHERE (valid = 1) AND (email = '".trim($_POST['email'])."') AND (password = '".trim($_POST['password'])."')";
$stmt = sqlsrv_query( $conn, $query);
echo "num: ".sqlsrv_num_rows( $stmt );
if (!sqlsrv_num_rows( $stmt )) {
return (false);
} else {
}
示例查询
SELECT TOP 1 id, name FROM users WHERE (valid = 1) AND (email = 'roi@some_email.com') AND (password = '8521')
我正在使用 PHP 和 MSSQL。
解释:
- 函数
sqlsrv_num_rows()
需要客户端、静态或键集游标,并且 returnfalse
如果您使用前向游标或动态游标(默认游标是向前光标)。使用额外的$options
参数执行sqlsrv_query()
并使用"Scrollable" => SQLSRV_CURSOR_KEYSET
设置适当的游标类型
- 使用参数化语句。函数
sqlsrv_query()
同时进行语句准备和语句执行,可用于执行参数化查询。 - 如果要检查结果集是否有一行或多行,可以使用
sqlsrv_has_rows()
。
示例,基于您的代码:
<?php
$query = "
SELECT TOP 1 id, tourOp
FROM users
WHERE (valid = 1) AND (email = ?) AND (password = ?)";
$params = array(trim($_POST['email']), trim($_POST['password']));
$options = array("Scrollable" => SQLSRV_CURSOR_KEYSET);
$stmt = sqlsrv_query( $conn, $query, $params, $options);
if ($exec === false){
echo print_r( sqlsrv_errors());
echo "<br>";
return (false);
}
$count = sqlsrv_num_rows($stmt);
if ($count === false) {
echo print_r( sqlsrv_errors());
echo "<br>";
return (false);
} else {
echo "num: ".$count;
}
?>
备注:
不要以纯文本形式发送用户凭据。