当前位置: 首页 > 面试题库 >

如何使用ODBC连接在PHP中获取结果集中的计数或行数?

沈旻
2023-03-14
问题内容

当我在PHPWeb应用程序中构建网页时,“我的连接”可以正常工作,但是当我想获取查询中使用的SELECT语句的行数时,它给我-1!尽管我的结果集大约有10行。

我想获取结果集行的实际数量。我搜索了PHP手册和文档,但是找不到像Count函数之类的直接方法。

我想知道是否必须在另一个查询中创建Count(*)SQL语句并将其附加到我的Connection以获得行数吗?

有谁知道一种简单直接的方法来做到这一点?

odbc_num_rows函数的结果始终为-1,所以我无法获得实际的行数。

我的编程语言是PHP,我的数据库引擎是Sybase,连接数据库的方法是ODBC。

这是您我使用的代码:-

<?PHP

//PHP Code to connect to a certain database using ODBC and getting information from it

//Determining The Database Connection Parameters
$database = 'DatabaseName';
$username = 'UserName';
$password = 'Password';

//Opening the Connection
$conn = odbc_connect($database,$username,$password);

//Checking The Connection
if (!$conn)
{
exit("Connection Failed: " . $conn);
}

//Preparing The Query
$sql = "SELECT * FROM Table1 WHERE Field1='$v_Field1'";

//Executing The Query
$rs = odbc_exec($conn,$sql);

//Checking The Result Set
if (!$rs)
{
exit("Error in SQL");
}

echo "<p align='Center'><h1>The Results</h1></p>";

while ( odbc_fetch_row($rs) )

{
  $field1 = odbc_result($rs,1);
  $field2 = odbc_result($rs,2);
  $field3 = odbc_result($rs,3);
  echo "field1 : " . $field1 ;
  echo "field2 : " . $field2 ;
  echo "field3 : " . $field3 ;
}

$RowNumber = odbc_num_rows($rs);

echo "The Number of Selected Rows = " . $RowsNumber ;

//Closing The Connection
odbc_close($conn);

?>

感谢您的帮助 :)


问题答案:

odbc_num_rows 似乎仅对INSERT,UPDATE和DELETE查询可靠。

该手册说:

使用odbc_num_rows()确定SELECT后可用的行数将返回-1,其中包含许多驱动程序。

解决此问题的一种方法是COUNT(*)用SQL代替。请参阅此处的示例



 类似资料:
  • 问题内容: 阅读完SQL注入攻击后,我只是在编辑搜索脚本。我正在尝试使用PDO而不是常规的mysql连接从脚本中获得相同的功能。因此,我一直在阅读有关PDO的其他文章,但不确定。这两个脚本会提供相同的功能吗? 使用PDO: 使用常规mysql: 我继续使用常规示例 从数据库创建匹配结果数组。我该如何使用PDO? 问题答案: 看一下方法。您也可以在迭代器模式中使用。 来自PHP文档的的代码示例: 结

  • 我的数据库中有一个小特例,我需要从两个具有一对一关系的不同表中获取数据,以获得有用的结果。获取看起来像这样: 当然,我在实际代码中使用了-这只是一个示例。我的问题是是否以及如何将jOOQ中获取的数据写入POJO。我不确定是否有办法让jOOQ为我生成这个POJO,但如果我必须自己编写它,我假设我需要像适配器这样的东西以及像作为数据类型的转换器。 我看到有可能出现RecordMapperProvide

  • 问题内容: 这个可以吗 ? 然后在尝试打印时 我有一个错误 问题答案: 尝试mysql_fetch_field函数。 例如:

  • 问题内容: 我正在使用CsvJdbc(它是用于csv文件的JDBC驱动程序)来访问csv文件。我不知道csv文件包含多少列。如何获得列数?是否有任何JDBC函数?我在java.sql.ResultSet中找不到任何方法。 为了访问该文件,我使用类似于CsvJdbc网站上示例的代码。 问题答案: 您可以从ResultSetMetaData获取列号:

  • 问题内容: 我正在尝试以下查询: 那是三个查询卡在一起,有点儿。但是,返回的结果集将反映查询3的结果,而不是查询1的结果。 有什么方法可以对它们进行优先级排序,以使查询#1的结果全部相同,查询#2的结果全部相同,然后查询#3的结果全部相同?我现在还不想在PHP中执行此操作(更不用说必须控制在第一个查询中显示的结果而不在第二个查询中显示等等)。 问题答案: 也许您应该尝试包括第四列,说明它来自的表,

  • 使用SQL Server 2008 我想从值2中选择精确的值1匹配,并且前9个字符值2应该从值1中匹配。下面供您参考 类似查询 从表2中选择*,其中的值为'%table1 values%' 预期产出 请提供咨询和支持