0

SQLite3 DB からいくつかの値を取得しようとする次のコードがあります。

<?php
if (isset($_GET['keyword'])) {
   $keyword = $_GET['keyword'];
} else {
   echo 'No keywords!';
}

class DB extends SQLite3 {
   function __construct($file) {
     $this->open($file);
   }
}

$db = new DB('mpsn.sqlite3');
if (!$db) {
echo $db->lastErrorMsg();
} else {
  echo "Successfully opened DB.<br/>";
}
/* DISPLAYING RESULTS */
$sql = <<<EOF
  SELECT * from glossary WHERE title LIKE '$keyword';
EOF;
$ret = $db->query($sql);
if ($ret) {//LINE A
while ($row = $ret->fetchArray(SQLITE3_ASSOC)) {
    echo "Judul = " . $row['title'] . "<br>";
    echo "Link = " . $row['link'] . "<br>";
    echo "Deskripsi = " . $row['description'] . "<br>";        
}
echo "Operation done successfully\n";
$db->close();
} 
else {//LINE B
echo 'Not found';//LINE C
}//LINE D
?>

これらの行 A、B、C、および D がなければ、スクリプトは非常にうまく機能します。しかし、関数を実行してもわかりません ( にが見つからないif場合)、まったく応答しませんでした。$keywordtitle

そこにあるはずのないキーワードを指定したにもかかわらず、アラートが表示されますOperation done successfully( で を実行せずechowhile)。

だから私は問題がif事にあると推測しています。D行でこれを次のように変更します。

$ret->query$db($sql);

それでもうまくいきません。これで何を見逃したのですか?ありがとう。

4

1 に答える 1

0

Mark Ba​​ker のコメントからこの学習を行いました、ありがとう。

$ret = $db->query($sql);
if ($ret->numColumns()&&$ret->columnType(0)!=SQLITE3_NULL) {
while ($row = $ret->fetchArray(SQLITE3_ASSOC)) {
    echo "Judul = " . $row['title'] . "<br>";
    echo "Link = " . $row['link'] . "<br>";
    echo "Deskripsi = " . $row['description'] . "<br>";        
}
echo "Operation done successfully\n";
$db->close();
} else {
echo 'Not found';
}

実際に行が返されたかどうかは確認しませんでした。

于 2013-09-10T13:25:00.797 に答える