私は PHP でインストール スクリプトを作成しています。このスクリプトは、ユーザーにいくつかのデータを要求し、それらを XML ファイルとデータベースに保存する必要があります。
手順は次のとおりです。
1) データを挿入します。
2) 構成データ (データベース名、ユーザー、パスワード、ホスト、ポートなど) を XML ファイルに保存します。
3)これらのデータを使用してデータベースをインストールします(作成に使用する空のダンプがあります)
4) 「admin」テーブルに最初のユーザー データを挿入します (ポイント 1 のフォームから取得)。
これで、ポイント 4 まではすべて正常に動作します。データベースにアクセスしようとすると、MySql は常にテーブルが存在しないというエラー #1146 を返します。
これは私のカスタム JSON ログです。
{
"Status":"KO",
"Reason":"SELECT * FROM bbscp_admin_user; || Table 'adb.bbscp_admin_user' doesn't exist",
"Errno":1146
}
明らかに、phpMyAdmin と mysql (cli から) の両方でチェックしたところ、DB とテーブル DO の両方が存在すると言えます。
DBを作成する部分は次のとおりです。[これは正常に動作します]
$Install = Install::getInstance();
$sqlscript = str_replace("__DBNAME__",
$config_info['dbname'],
file_get_contents('../config/bbscp-base-db.sql')
);
$connection = mysqli_connect($config_info['dbhost'],
$config_info['dbuser'],
$config_info['dbpwd']
) or die("Unable to connect! Error: ".mysql_error());
if(mysqli_query($connection,'CREATE DATABASE '.$config_info['dbname'].';')){
echo 'Database successfully createad';
mysqli_close($connection);
}else{
die('ERROR CREATING DATABASE!');
}
ここでは、ダンプからデータベースにデータを入力する部分です (テーブルを追加するだけです)。
$connection = mysqli_connect($config_info['dbhost'],
$config_info['dbuser'],
$config_info['dbpwd'],
$config_info['dbname']
) or die("Unable to connect! Error: ".mysql_error());
if(mysqli_multi_query($connection, $sqlscript)){
echo 'Database successfully imported';
mysqli_close($connection);
}else{
die('ERROR IMPORTING DATABASE');
}
ここで決定的な部分として、データベースとの接続を開きます (過去数年間に開発したライブラリを使用して、常に正常に動作しています)。
$DB = new Database(Install::getInstance());
$Q = new Query();
$DB->connect();
$query = $Q->addNewUser($config_info['nickname'],
$config_info['password'],
$config_info['firstname'],
$config_info['lastname'],
$config_info['email'],
0); // this just returns the query string I need
// the query in this case is:
// INSERT INTO bbscp_admin_user
// (nickname,password,firstname,lastname,mail,confirmed)
// VALUES (the ones above);"
$res=$DB->startQuery($query); // THIS IS WHERE THE ERROR IS RETURNED
// this function only wraps the mysqli_query and returns a custom JSON
私は多くの解決策を試しました..テーブルは存在しますが、明らかに「テーブルが存在しない」ため、この時点で呼び出そうとするすべてのクエリは機能しません(鉱山の代わりにmysqli関数を使用しても)。
事前に感謝し、長い質問を申し訳ありません! :-)
EDIT 1 この間、私は多くのコードを変更しました.関数、オブジェクト、リダイレクトを使用して別の実装を使用しようとしましたが、どれも機能していないようです.
事は常に同じです:
- データベースを作成します
- ユーザーを追加しようとすると、エラー コードが返されます
- ページを更新すると、ユーザーが正しく追加されます