两者似乎都试图在PHP中使用数据库使其更简单.两者似乎都提供了对MySQL,SQLite等不同数据库类型的抽象.
ADOdb和PDO之间有什么区别?
当我插入一行时,它使用SERIAL递增ID字段.
如何在插入后立即返回新创建的ID号?
(数据库是Postgresql.)
我们正在将 PHP 升级到版本 8.1。使用 MS Sql Server 数据库。一切似乎都正常工作,但我在日志文件中看到重复的消息:
[03-Feb-2022 11:51:18 America/New_York] PHP 已弃用:C:...\includes\adodb\drivers\adodb-mssqlnative.inc.php 第 154 行中已弃用 false 到数组的自动转换
我已将 adodb 更新到版本 5.22,但这并没有阻止消息记录。ini文件有
extension=php_sqlsrv_81_nts_x64.dll
extension=php_pdo_sqlsrv_81_nts_x64.dll
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?
我有10万多行的表,我想在教义中选择所有这些,并在每行中执行一些操作,在symfony2中使用doctrine我尝试使用此查询:
$query = $this->getDefaultEntityManager()
->getRepository('AppBundle:Contractor')
->createQueryBuilder('c')
->getQuery()->iterate();
foreach ($query as $contractor) {
// doing something
}
Run Code Online (Sandbox Code Playgroud)
但后来我得到内存泄漏,因为我认为它在内存中写入了所有数据.
当我这样做时,我在ADOdb中有更多的经验,在那个库中:
$result = $ADOdbObject->Execute('SELECT * FROM contractors');
while ($arrRow = $result->fetchRow()) {
// do some action
}
Run Code Online (Sandbox Code Playgroud)
我没有任何内存泄漏.
那么如何从表中选择所有数据并且不会在symfony2中使用doctrine获取内存泄漏?
问题编辑
当我尝试删除foreach并且只是迭代时,我也会遇到内存泄漏:
$query = $this->getDefaultEntityManager()
->getRepository('AppBundle:Contractor')
->createQueryBuilder('c')
->getQuery()->iterate();
Run Code Online (Sandbox Code Playgroud) 从MySQL检索数据时,PHP的阵列输出具有两个数字和名称索引.我怎么能阻止这个?
我用fetch:
$stmt = $this->dbObj->Prepare($sql);
$rs = $this->dbObj->Execute($stmt);
if (!$rs) {
trigger_error($this->dbObj->ErrorNo() . ' ' . $this->dbObj->ErrorMsg(), E_USER_ERROR);
}
$this->videos_voted = null;
while ($row = $rs->FetchRow()) {
$this->videos_voted[$row['video_id']] = $row;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Array
(
[16] => Array
(
[0] => 16
[video_id] => 16
[1] => 1028
[total_views] => 1028
[2] => No
[featured] => No
)
)
Run Code Online (Sandbox Code Playgroud)
如您所见,输出具有数字和名称索引.
ADOdb fetchRow
输出:
Array
(
[0] => ABC
[NAME] => ABC
[1] => 33
[AGE] => 33
[3] => M
[GENDER] => M
[4] => LA
[CITY] => LA
[5] => OH
[STATE] => OH
)
Run Code Online (Sandbox Code Playgroud)
如何获得仅数字索引输出:
Array
(
[0] => ABC
[1] => 33
[2] => M
[3] => LA
[4] => OH
)
Run Code Online (Sandbox Code Playgroud)
或仅名称索引输出?:
Array
(
[NAME] => ABC
[AGE] => 33
[GENDER] => M
[CITY] => LA
[STATE] => OH
)
Run Code Online (Sandbox Code Playgroud) 我使用ADOdb Execute
函数:
$query = "select * from users where user_id = ? and PWD = ?";
$execute = $conn->Execute($query,array($username, $password));
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
Fatal error: Cannot pass parameter 2 by reference
Run Code Online (Sandbox Code Playgroud)
我不知道为什么.有任何想法吗?
我正在使用PHP ADOdb,我可以得到结果集:
$result = &$db->Execute($query);
Run Code Online (Sandbox Code Playgroud)
如何从该行获取字段名称并循环它?
(如果重要,我正在使用访问数据库.)
我有一个linux服务器,我正在尝试使用php adodb连接到MSSQL服务器.
include('adodb5/adodb.inc.php');
$conn =& ADONewConnection('odbc_mssql');
$dsn = "Driver={SQL Server};Server=MSSERVER;Database=Northwind;";
$conn->Connect($dsn,'sa','password')or die("Unable to connect to server");
Run Code Online (Sandbox Code Playgroud)
我通过yum等安装mssql,我知道服务器可以连接到它,因为我尝试了以下内容:
$db = @mssql_connect("MSSERVER","sa","password") or die("Unable to connect to server");
mssql_select_db("Northwind");
// Do a simple query, select the version of
// MSSQL and print it.
$version = mssql_query('SELECT @@VERSION');
$row = mssql_fetch_array($version);
echo $row[0];
// Clean up
mssql_free_result($version);
Run Code Online (Sandbox Code Playgroud)
任何想法为什么我的adodb不会连接,或任何关于如何连接的例子将非常感激.
我正在使用ADOdb.由于某种原因,实际上$db
没有在'write'函数中导入.
该函数用于导入$db
实际值.相反,它将空值分配给$db
:
<?php
// load ADODB class
include(DIR_WS_CLASSES . "adodb5/adodb.inc.php");
$db = NewADOConnection(DB_TYPE);
$db->Connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
class SessionManager {
var $life_time;
function SessionManager(){
global $db;
// Read the maxlifetime setting from PHP
$this->life_time = get_cfg_var("session.gc_maxlifetime");
// Register this object as the session handler
session_set_save_handler(array(&$this, "open"),
array(&$this, "close"),
array(&$this, "read"),
array(&$this, "write"),
array(&$this, "destroy"),
array(&$this, "gc"));
}
function open($save_path, $session_name){
global $sess_save_path;
global $db;
$sess_save_path = $save_path;
return true;
}
function close(){
global $db; …
Run Code Online (Sandbox Code Playgroud) adodb-php ×10
php ×10
sql-server ×2
doctrine ×1
doctrine-orm ×1
mysql ×1
pdo ×1
php-8.1 ×1
postgresql ×1
symfony ×1