0

私は初心者のプログラマーで、PHP を少し学ぶつもりで XAMPP をインストールしました。私はSQLの実用的な知識を持っています。

w3schoolsの PHP チュートリアルに従っています。私が現在抱えている問題は次のとおりです。ここでスクリプトを使用して、データベースとその中にテーブルを作成しています。ユーザーを「root」に置き換え、パスワードを削除したことを除いて、私が使用しているのはほぼそのままです。

ブラウザでスクリプトを実行すると、データベース my_db が XAMPP の mysql のデータファイルに表示されます。

ただし、テーブルの兆候はなく、テーブルを選択しようとすると、

テーブル 'my_db.persons' が存在しません

何が起こっている?私が逐語的に取ったコードに何か問題がありますか、それともパーミッションに何か問題がありますか?

データベースは作成されているのにテーブルが作成されていないのは奇妙です...

4

1 に答える 1

1

何が起こったのかというと、「CREATE TABLE」が失敗するということです。

(コード内の) すべての mySQL クエリの後にエラーをチェックする習慣を身につけてください。エラーを無視できる場合もありますが、まれです。したがって、次の行に沿ってプログラムします。

Create query: $sql =
Set parameters: $aParams =   (or bind paramters)
Execute query
If errors
    If debug: Show error and query
    If live: Log error and query

あなたが従うチュートリアルの問題の1つは、まもなく減価償却されるmysql_()関数を使用することであるため、解決策はコードではありません。PDO (PHP データベース オブジェクト)またはmysqli()関数を使用する必要があります。そうしないと、数回のリリースでコードが機能しなくなります。

PDO では、例外を使用するようにエラー処理を設定できます。また、すべての呼び出しを try {} catch {} でラップします。これにより、エラーをキャッチして報告する習慣が非常に簡単になります。

    $sql = 'CREATE TABLE....';
    $aParams = array(
        ':param_name' => $param_value,
        ':param_name2' => $param_value2
           );

    try {
        $stmnt = $db->prepare($sql);
        $stmnt->execute($aParams);
        $stmnt = null;
    } catch (Exception $e) {
        // Error log here; $e contins line of error and the actual error, you have $sql and $aParams
        LogDBError($e, $sql, $aParams);
    }
于 2012-12-21T03:21:15.837 に答える