1

私は 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 この間、私は多くのコードを変更しました.関数、オブジェクト、リダイレクトを使用して別の実装を使用しようとしましたが、どれも機能していないようです.

事は常に同じです:

  • データベースを作成します
  • ユーザーを追加しようとすると、エラー コードが返されます
  • ページを更新すると、ユーザーが正しく追加されます
4

0 に答える 0