【发布时间】:2011-11-14 00:39:16
【问题描述】:
如何在 .NET 等 PHP 中实现 DataSet?
我希望这个类只从数据库中读取一次数据,然后我应该能够使用这些数据而无需再次连接到 MySQL 来运行查询。
select * from user
当我在DataSet 上运行此查询时,数据是从内存中获取的。
如何在 PHP 中实现这种机制?
【问题讨论】:
如何在 .NET 等 PHP 中实现 DataSet?
我希望这个类只从数据库中读取一次数据,然后我应该能够使用这些数据而无需再次连接到 MySQL 来运行查询。
select * from user
当我在DataSet 上运行此查询时,数据是从内存中获取的。
如何在 PHP 中实现这种机制?
【问题讨论】:
您所描述的是 .NET 的 DataSet / DataTable 数据容器类,它们可以在断开连接模式下工作。
DataReader 是一种游标,需要打开连接才能在基础查询的结果集中移动。
在 PHP 中你可以这样做:
<?PHP
$user_name = "root";
$password = "";
$database = "addressbook";
$server = "127.0.0.1";
$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);
if ($db_found) {
$SQL = "SELECT * FROM tb_address_book";
$result = mysql_query($SQL);
while ($db_field = mysql_fetch_assoc($result)) {
print $db_field['ID'] . "<BR>";
print $db_field['First_Name'] . "<BR>";
print $db_field['Surname'] . "<BR>";
print $db_field['Address'] . "<BR>";
}
mysql_close($db_handle);
}
else {
print "Database NOT Found ";
mysql_close($db_handle);
}
?>
【讨论】:
您可以将数据推送到这样的数组中:
$result = mysql_query( 'select * from user' );
$results = array();
while ( $row = mysql_fetch_array( $result ) ) {
array_push( $results, $row );
}
mysql_close();
然后你就可以对数组做任何你想做的操作了……
foreach( $results as $record ){
$foo = $record['col_name'];
//...
}
【讨论】:
我不认为 php 可以提供你正在寻找的东西,因为它是非常多的文本代码和 HTML 驱动的,所以你不会像在 .net 中那样得到花哨的 GUI 对象。 PEAR 提供了很多可以生成数据网格的源代码,您可以调查这些源代码,它们都存储在数组等代码中。我对 php 比较陌生,所以也许有人会不同意...
【讨论】: