-2

行を取得するためにこのPHPコードを使用していますが、エラーが発生しています

$db = new PDO('sqlite:db/logs');

$result = $db->exec("SELECT * FROM users");

while($row = $result->fetch(SQLITE_ASSOC))
{

}

私はsqlite3とphp5を使用していますが、それを知りたいです

  1. 私も使用したデータベースに正しいコードで接続していますsqlite.open()が、エラーも発生していますか?

  2. これnew PDO('sqlite:db/logs')はデータベースに接続しますが、毎回新しいデータベースを作成するのはなぜですか

  3. 私の主な問題は、 while ループがある場所でエラーが発生することです

非オブジェクトでのメンバー関数 fetch() の呼び出し

これを手伝ってください私はphpとsqliteの初心者です

4

2 に答える 2

4

PDOwhileを使用して使用することはできません。手続き型アプローチを使用して使用できます。

いくつかの参照: REFERENCE LINK

&クエリ$db->execに使用できます。レコードを取得したいときではありません。insertupdate

次の変更を試してください。

$db = new PDO('sqlite:db/logs');
//connection code here
$result = $db->query("SELECT * FROM users"); //replace exec with query

foreach($result as $row){
    $row['field1'];
    $row['field2'];
}
于 2012-12-10T11:30:29.483 に答える
2

PDO::exec()フェッチできるオブジェクトではない行数を返します。

PDO::exec() は、発行した SQL ステートメントによって変更または削除された行数を返します。影響を受けた行がない場合、PDO::exec() は 0 を返します。

代わりに次を使用できますquery()

$result = $db->query('SELECT * FROM users');

foreach($result as $row)
{
    print_r($row);
}
于 2012-12-10T11:30:43.587 に答える