关于sqlite查询的问题

#1 prince

表如下:
CREATE TABLE [mbt_admin] (
[id] INTEGER  PRIMARY KEY NOT NULL,
[log_name] VARCHAR(12)  UNIQUE NOT NULL,
[log_pw] VARCHAR(32)  NULL,
[time_cr] DATETIME  NULL,
[time_last] TIMESTAMP  NULL,
[explain] VARCHAR(210)  NULL
)
这是表里的数据:
t_data.jpg
表model:

header("content-type:text/html; charset=utf8");
class mbt_admin extends spModel
{
        var $pk="aclid";//相册表的主键
        var $table="mbt_admin";//表名
        function create($row){
        $row['time_cr'] = date("Y-m-d H:i:s");
        parent::create($row);
    }

}
能成功插入记录,但查不到数据,查询如下:
class backdemo extends spController{
function blogin(){
    $user = $this->spArgs("accouts");
      $condition = array('log_name' => $user);
          $mbt_admin = spClass('mbt_admin');
          $results = $mbt_admin -> find($condition);
      dump($results);
}
能接收到表单提交的数据,dump显示$results为空,何解?
这是表单:

   
      
      
      
      
      
      
      
      
      
      
帐   号:
密   码:
        <{pwinput id=mypw add="class=pwform name=mypwname"}>
                 
验证码:
         看不清楚,点击图片刷新

2011-05-13 22:58:22

#2 jake

传个sqlite的正确例子,对比找问题。
litegb.zip

2011-05-14 09:04:07

#3 prince

问题解决了,应该是数据库的原因,我原来用SQLite Administrator创建的数据库为sqlite2版本的,迁移到sqlite3版本再用PDO方式连接就行了,谢谢jake帮助

2011-05-14 11:10:31

#4 prince

我把数据库文件放上来mebtime.rar
jake,按照你的例子中的插入新记录不成功,但查询数据库没问题
按照论坛上面相仿的贴子里说的,把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

#8 prince

回复 7 jake


    jake,你上传的实例是不是gb版本?

2011-05-16 16:36:29

#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

#11 jake

。。。

驱动是sqlite的,不过参数用错了。

2013-01-30 13:43:56

#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

#14 xoYu

jake 发表于 2013-1-30 15:51
前面那个实例是可以读取也可以写入的,sqlite很多时候看建立的工具和版本。
...
好麻烦 本来是个小东西 搞着玩 不想用mysql

现在不得不用了mysql


2013-01-30 16:04:08

#15 jake

xoYu 发表于 2013-1-30 16:04
好麻烦 本来是个小东西 搞着玩 不想用mysql

现在不得不用了mysql
sqlite不成熟,也不小。mysql不大,很简单,超配php

2013-01-30 16:51:14