我正在尝试插入表中,但却无法找到表用户。我在标题中发布了错误。表格肯定存在:
这就是我的联系方式:
define("DB_DSN", "sqlite2:host=hosthere;dbname=dbnamehere");
define("DB_USERNAME", " ");
define("DB_PASSWORD", " ");
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO users(username, password) VALUES(:username, :password)";
我正在使用一个免费的网站主机,所以我除了.htaccess之外我无法编辑。它有sqlite和sqlite2。我尝试使用sqlite:host ...但我仍然得到同样的错误。我还是PDO的新手,非常感谢任何帮助。
答案 0 :(得分:2)
您的连接字符串似乎不正确。
没有用于连接SQLite数据库的“host”和“dbname”变量。 SQLite数据库是一个文件,打开SQLite数据库所需的只是该文件的文件路径。
连接字符串由数据库类型(在您的情况下为sqlite2)组成,后跟冒号(:),后跟数据库的完整路径。
因此,例如,如果您的数据库名为“mydata.sqlite”,并且它位于“/ home / users / yayu / database”目录中,那么您的连接字符串将如下所示:
sqlite2:/home/users/yayu/database/mydata.sqlite
因此,要使用示例中提供的常量,可以使用以下命令:
define("DB_DSN", "sqlite2:/home/users/yayu/database/mydata.sqlite")
$con = new PDO(DB_DSN)
这就是连接所需的一切。每个SQLite数据库文件只有一个数据库(除非您明确地附加另一个数据库)。因此无需指定数据库名称。
有关更多信息,请参阅SQLite PDO驱动程序的PHP在线文档: http://us2.php.net/manual/en/ref.pdo-sqlite.php
我认为我要做的第一件事就是找出你的SQLite数据库文件的确切位置。看起来您正在使用基于Web的界面来管理SQLite数据库。尝试查看是否有某些设置或类似选项显示数据库的完整路径。 如果这没有帮助,请联系托管服务提供商并询问SQLite数据库文件的位置。
答案 1 :(得分:1)
要确保表位于特定数据库中,您可以使用MySQL SHOW TABLES
列出表。
小心名字中的前导空格。
TRY
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->query("SHOW TABLES FROM yayu_zxq_users");
$tables = $stmt->fetchAll(PDO::FETCH_NUM);
print_r($tables);