簡體   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