繁体   English   中英

找不到表(SQLSTATE [HY000]:常规错误:1无此类表:用户)

[英]Can't find table (SQLSTATE[HY000]: General error: 1 no such table: users)

我正在尝试插入表中,但是找不到表用户。 我得到标题中张贴的错误。 该表绝对存在:

在此处输入图片说明

这就是我的连接方式:

 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的新手,希望能对您有所帮助。

您的连接字符串似乎不正确。

没有用于连接到SQLite数据库的“主机”和“ 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数据库文件的位置。

为了确保表格在特定的数据库中,您可以使用MySQL SHOW TABLES列出表格。 当心名称中的前导空格。

尝试

$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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM