这是我在我的PHP源代码中使用SQLite数据库的源代码。当我运行脚本时,它会给我这个错误
Warning: sqlite_query() [function.sqlite-query]: no such table:
books in D:\wamp\www\sqllite\index.php on line 13
Error in query: SQL logic error or missing database
我认为错误发生在数据库
的路径上<?php
$db = $_SERVER['DOCUMENT_ROOT']."umer.db";
$handle = sqlite_open($db) or die("Could not open database".sqlite_error_string(sqlite_last_error($handle)));
$query = "SELECT * FROM books";
$result = sqlite_query($handle, $query) or die("Error in query: ".sqlite_error_string(sqlite_last_error($handle)));
if (sqlite_num_rows($result) > 0) {
echo "<table cellpadding=10 border=1>";
while($row = sqlite_fetch_array($result)) {
echo "<tr>";
echo "<td>".$row[0]."</td>";
echo "<td>".$row[1]."</td>";
echo "<td>".$row[2]."</td>";
echo "</tr>";
}
echo "</table>";
}
sqlite_close($handle);
?>
答案 0 :(得分:1)
错误可能是路径,由此行决定:
$db = $_SERVER['DOCUMENT_ROOT']."umer.db";
要解决此问题,您应该尝试
echo $db;
然后将其与您的实际路径进行比较 - 从那里您应该能够调整您的字符串。
如果路径仍然正确,请仔细检查您的文件权限,并确保运行php进程的用户可以读取它。
祝你好运!答案 1 :(得分:0)
php将开始查找相对于当前运行文件来自的目录的数据库文件,因此像(“../../ databases / mydb.sq3”)这样的结构通常比使用绝对路径更便携或者相对于DOCUMENT_ROOT的路径,因为这些路径可以随心所欲地改变。
您的程序几乎肯定找不到数据库文件,在这些情况下,sqlite会创建一个新的空文件,并且在您尝试使用数据库时引发“找不到表”错误会导致很大的混淆。
找一个空的“umber.db”出现在意外的地方,这样可以告诉你哪里出错了。