#3 prince
问题解决了,应该是数据库的原因,我原来用SQLite Administrator创建的数据库为sqlite2版本的,迁移到sqlite3版本再用PDO方式连接就行了,谢谢jake帮助
2011-05-14 11:10:31
#4 prince
我把数据库文件放上来
mebtime.rarjake,按照你的例子中的插入新记录不成功,但查询数据库没问题
按照论坛上面相仿的贴子里说的,把pdo驱动文件更换掉没有用
插入新记录代码如下:
function FLnew(){
$FLobj = spClass('mbt_flink');
$newrows = array('fname'=>$this->spArgs('fname'),
'linkadd'=>$this->spArgs('linkadd'),'adduser'=>$_SESSION['mbt']['log_name'],'explain'=>$this->spArgs('explain'));
$FLobj->create($newrows);
dump($newrows);
dump($FLobj);
}
dump($newrows)显示表单数据是能正确提交的,dump($FLobj)显示如下:
mbt_flink Object
(
[pk] => id
[table] => mbt_flink
[verifier] =>
[addrules] => Array
(
)
[linker] =>
[tbl_name] => mbt_flink
[_db] => db_pdo_sqlite Object
(
[conn] => PDO Object
(
)
[arrSql] => Array
(
[0] => SELECT * FROM SQLITE_MASTER WHERE name = 'mbt_flink' AND type='table'
)
[num_rows:private] =>
)
)
数据库配置如下:
'db' => array(// 数据库连接配置
'driver' => 'pdo_sqlite',// 驱动类型
'host' => 'sqlite:'.APP_PATH.'/database.db',// 数据库文件地址
'persistent' => FALSE,// 是否使用长链接
),
'db_driver_path' => SP_PATH.'/Drivers/pdo.php', // 自定义数据库驱动文件地址
2011-05-14 11:10:46
#5 prince
补充一点,用runSql()可以成功插入新的记录:
$sql = "INSERT INTO mbt_flink (fname,linkadd,add_user,explain) values('金蝶柳州营销服务中心','http://www.kingdeelz.com','admin','测试测试')";
$FLobj = spClass('mbt_flink');
$FLobj -> runSql($sql);
2011-05-14 22:08:36
#6 prince
再补充一点,用dumpSql()出来是
SELECT * FROM SQLITE_MASTER WHERE name = 'mbt_flink' AND type='table'
2011-05-14 23:16:41
#7 jake
我那个例子是正常的,里面全部的新记录都是通过create新增的,
建议测试时别修改任何东西,包括数据库。然后再逐项修改。
2011-05-15 08:31:14
#9 jake
回复 8 prince 不是,我都是用UTF8的。建议别用SQLite Administrator,经常会有版本和编码问题。试试navcat的sqlite版吧,
2011-05-17 09:04:08
#10 xoYu
jake 发表于 2011-5-14 09:04 
传个sqlite的正确例子,对比找问题。
直接拿来测试不成功 发现驱动里pdo.php里是mysql。。。
/**
* 构造函数
*
* @param dbConfig 数据库配置
*/
public function __construct($dbConfig)
{
if(!class_exists("PDO"))spError('PHP环境未安装PDO函数库!');
try {
$this->conn = new PDO($dbConfig['host'], $dbConfig['login'], $dbConfig['password'],array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
} catch (PDOException $e) {
spError('数据库链接错误/无法找到数据库 : ' . $e->getMessage());
}
}
================================================
错误提示
Fatal error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in D:\AppServ\www\speedphp3.1.89\SpeedPHP\Drivers\pdo.php on line 138
2013-01-30 13:37:29
#12 xoYu
jake 发表于 2013-1-30 13:43 
。。。
驱动是sqlite的,不过参数用错了。
唉 终于连上sqlite了 但是读取不了 更新也不成功 。。。暴汗啊
希望作者有价格简单的示例就好了 示例于框架同步更新 ,。。。
2013-01-30 14:50:14
#13 jake
xoYu 发表于 2013-1-30 14:50 
唉 终于连上sqlite了 但是读取不了 更新也不成功 。。。暴汗啊
希望作者有价格简单的示例就好了 示例 ...
前面那个实例是可以读取也可以写入的,sqlite很多时候看建立的工具和版本。
2013-01-30 15:51:36
#15 jake
xoYu 发表于 2013-1-30 16:04 
好麻烦 本来是个小东西 搞着玩 不想用mysql
现在不得不用了mysql
sqlite不成熟,也不小。mysql不大,很简单,超配php
2013-01-30 16:51:14