Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php sqlite_fetch_数组损坏的结果_Php_Sqlite_Arrays_Fetch_Corrupt - Fatal编程技术网

php sqlite_fetch_数组损坏的结果

php sqlite_fetch_数组损坏的结果,php,sqlite,arrays,fetch,corrupt,Php,Sqlite,Arrays,Fetch,Corrupt,我开始尝试使用sqlite来托管小型网站,在我自己的个人服务器上,我遇到了一个glich,这破坏了整个想法 我有一个非常简单的测试示例,在sqlite 2.x数据库中的两行表上,我使用5.2.12托管,我也尝试过PDO sqlite3数据库,问题是这样的。“用户”表,包含一些信息,该表如下 字段(id、用户名、姓名、姓氏、密码) 表中有两个条目,它们是 条目(1,克里斯,克里斯托弗,托马斯,123) 条目(2,亚当,亚当,坦纳,456) 问题有点奇怪,当我像这样查询数据库时: 查询(“从id=2

我开始尝试使用sqlite来托管小型网站,在我自己的个人服务器上,我遇到了一个glich,这破坏了整个想法

我有一个非常简单的测试示例,在sqlite 2.x数据库中的两行表上,我使用5.2.12托管,我也尝试过PDO sqlite3数据库,问题是这样的。“用户”表,包含一些信息,该表如下

字段(id、用户名、姓名、姓氏、密码)

表中有两个条目,它们是

条目(1,克里斯,克里斯托弗,托马斯,123) 条目(2,亚当,亚当,坦纳,456)

问题有点奇怪,当我像这样查询数据库时:

查询(“从id=2的用户中选择*)

我得到了正确的结果,如下所示:

条目(2,亚当,亚当,坦纳,456)

当我请求所有行时,如以下查询(“从用户选择*”),我得到:

参赛作品(1,克里斯,克里斯托弗,坦纳,456) 参赛作品(亚当斯、亚当斯托弗、坦纳、456)

你看到发生了什么事了吗?第二个条目中的信息少于第一个条目中的字符,因此它似乎只是用第二个条目覆盖数据,从而导致一些损坏

克里斯 亚当斯
你能在你的5.2.x服务器上用这段代码重现错误行为吗?

对上面的一些文本格式感到抱歉,似乎网站已经改变了一些小东西,我希望它不会太烦人。如果你的问题的格式不是你所期望的,就编辑它吧!我试图把它修好,但我退缩了。预览有缺陷,虽然看起来不错,但最终结果是嵌套的框。@Artefactor:是的,我自己也发现了相同的结果是的,我试图在预览时做一些更改,但我发现要使预览输出看起来正确并不容易。好的,这很奇怪,它不会产生错误,您可以在这里看到结果,并且(我在pre中制作了一个小的mod来输出,以便正确格式化)。好的,这是一个测试用例,让我们找到重现我的错误所需的最小代码,我想知道它是否获得了产生错误的长度?或者使用我使用的工具(sqlabs.net中的SQLiteManager 3.1.1)创建表,看看这些,哦,我不喜欢它放置链接的方式,grr!!它看起来像是一个损坏的数据库,我不知道为什么,或者为什么看起来没有任何错误,它只是输出垃圾数据,我想知道你如何用一个更大更复杂的数据库来检测这个问题?也许你会在|你有另一个前端可以用在(可能损坏的)数据库文件上吗?最好是使用另一个版本的sqlite库,可能比php版本更新?
<p>TEST 1 with direct sqlite_* calls</p>
<?php 
try{
    $connection = sqlite_open("../playground.sqlite",0666,$error);
    $handle = sqlite_query("select * from users",$connection);

    $numResults = sqlite_num_rows($handle);

    for($a=0;$a<$numResults;$a++){
        print("<pre>".print_r(sqlite_fetch_array($handle,SQLITE_ASSOC),true)."</pre>");    
    }

}catch(Exception $e){
    die("EXCEPTION OCCURED: '$error'");
}
?>
<p>PDO TEST: SQLITE 2.x</p>
<?php    
    $connection = new PDO('sqlite2:../playground.sqlite');
    $handle = $connection->query("SELECT * FROM users");

    if($handle){
        $result = $handle->fetchAll(PDO::FETCH_ASSOC);
        print("<pre>".print_r($result,true)."</pre>");
    }else{
        var_dump($connection->errorInfo());
        print("query returned negatively");
    }
?>
<p>PDO TEST: SQLITE 3.x</p>
<?php    
    $connection = new PDO('sqlite:../playground.sqlite3');
    $handle = $connection->query("SELECT * FROM users");

    if($handle){
        $result = $handle->fetchAll(PDO::FETCH_ASSOC);
        print("<pre>".print_r($result,true)."</pre>");
    }else{
        var_dump($connection->errorInfo());
        print("query returned negatively");
    }
?>
TEST 1 with direct sqlite_* calls
Array
(
    [id] => 1
    [username] => chris
    [forename] => Christopher
    [surname] => Thomas
    [password] => 123
)

Array
(
    [id] => 2
    [username] => adams
    [forename] => Adamstopher
    [surname] => Tanner
    [password] => 456
)

PDO TEST: SQLITE 2.x
Array
(
    [0] => Array
        (
            [id] => 1
            [username] => chris
            [forename] => Christopher
            [surname] => Thomas
            [password] => 123
        )

    [1] => Array
        (
            [id] => 2
            [username] => adams
            [forename] => Adamstopher
            [surname] => Tanner
            [password] => 456
        )

)

PDO TEST: SQLITE 3.x
Array
(
    [0] => Array
        (
            [id] => 1
            [username] => chris
            [forename] => Christopher
            [surname] => Thomas
            [password] => 123
        )

    [1] => Array
        (
            [id] => 2
            [username] => adams
            [forename] => Adamstopher
            [surname] => Tanner
            [password] => 456
        )
)
<?php
echo PHP_VERSION, ' ', PHP_OS, ' ', PHP_SAPI, "\n";

$pdo = new PDO('sqlite:sotest.sqlite'); 
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$pdo->exec('DROP TABLE IF EXISTS users');
$pdo->exec('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY ASC, username,forename,surname,password)');
$pdo->exec("INSERT INTO users (id,username,forename,surname,password) VALUES (1,'chris','Christopher','Thomas',123)");
$pdo->exec("INSERT INTO users (id,username,forename,surname,password) VALUES (2,'adam','Adam','Tanner',456)");

$rows = $pdo->query("SELECT Length(forename) as cForename, Length(surname) as cSurname, * FROM users")->fetchAll(PDO::FETCH_ASSOC);
print_r($rows);
5.3.2 WINNT cli
Array
(
    [0] => Array
        (
            [cForename] => 11
            [cSurname] => 6
            [id] => 1
            [username] => chris
            [forename] => Christopher
            [surname] => Thomas
            [password] => 123
        )

    [1] => Array
        (
            [cForename] => 4
            [cSurname] => 6
            [id] => 2
            [username] => adam
            [forename] => Adam
            [surname] => Tanner
            [password] => 456
        )

)