0

sq3dを正常に開きましたが、テーブルの1つでSELECTを実行しようとすると、期待した結果が返されないようです。これがphpコードです:

$buildingArray = array();

class MyDB extends SQLite3
{
function __construct()
{
    $this->open('Database.s3db');
}
}


$db = new MyDB();

$query1 = "SELECT * FROM tbl_uploadData";
$result1 = $db->query($query1);
$u = $result1->fetchArray();
echo "<br/>Size of u: ".sizeOf($u)."<br/>";

for($i=0; $i<sizeOf($u); $i++){
echo "<br/>Items: ".$u[$i]."<br/>";
}

これは私のデータベースにあるものです:

tbl_uploadData:b_id --1,2,3,4:ここで、1,2,3,4はフィールド内のアイテム、b_idはフィールド名、tbl_uploadDataはテーブルです。

fetchArray()で1、2、3、4が返されることを期待しています

私がお返しに得るのは:

Size of u: 2
Items: 1
Notice: Undefined offset: 1 in C:\xampp\htdocs\PHPexcel\Tests\StrategicExcel.php on line 72
Items: 
4

2 に答える 2

2

spaced monkey が述べたように、 fetchArray() は一度に 1 つの結果のみを返します。そのため、while ループと b_id への参照をいくつか追加することで、動作するはずです。コードを次のように変更しました。

$databaseName = "Database.s3db";

$db2 = new SQLite3($databaseName); 
    $sql = "SELECT b_id FROM tbl_uploadData"; 
    $result = $db2->query($sql);//->fetchArray(SQLITE3_ASSOC); 
    $row = array(); 

    $i = 0; 
     while($res = $result->fetchArray(SQLITE3_ASSOC)){ 
         if(!isset($res['b_id'])) continue; 
            $row[$i]['b_id'] = $res['b_id']; 
            $i++; 
      } 
      print_r($row); 

将来誰かがこの問題に遭遇した場合、これが役立つことを願っています、TY

于 2012-07-03T13:39:10.943 に答える
0

fetchArray()は一度に1行しか取得しないため、行ごとに呼び出す必要があります。http://uk3.php.net/manual/en/function.sqlite-fetch-array.php

次のことができるはずです。

while ( $u = $result1->fetchArray() ) {
    echo "<br/>Items: ".$u['b_id']."<br/>";
}

sizeof($ u)が2を返す理由はわかりません。

于 2012-07-03T13:33:13.133 に答える