2009-05-04 13 views
2

CodeCharge Studioを使用して大規模なPHPアプリケーションを完成させています。この質問はCCSに関連するものではありませんが、もう少し一般的です。私は特定のSQL ServerテーブルでCRUD機能を許可するはずのWebフォームを持っていますが、インサートはエラーを投げずに失敗し続けます。これをデバッグする最良の方法は何でしょうか?大きなPHPアプリケーションでのSQLデバッグ

答えて

7

動的に生成されたSQLクエリに問題がある場合、通常、クエリをエコーアウトし、そのクエリをコンソール用に実行してみます。あるいは、文字列をファイルに書き出す単純なPHP関数を記述することもできます。これにより、クエリをページに直接表示する代わりに、ログファイルに表示する必要がなくなります。

5

実際のクエリが何であるかを確認し、そのクエリをDBで直接実行してみてください。その後、PHPの問題かDBの問題かを知ることができます。

結果に応じて、そこから移動します。

2

ログを有効にすると、siteに示すように、mysqlのすべてのsqlクエリを監視し、手動でクエリを実行し、その失敗の理由を確認することができます。

3

クエリが正常に見える場合は、クエリを実行するユーザーにと入力してデータベースへのアクセス権があることを再度確認します。

私はこれまでにそれに気づいてきました。

0

あなたはFirePHPを使って試してみて、あなたのFirebugに、すべてのSQLをログに記録する必要があります

例のようになります。


$sql = "SELECT * FROM table"
if (!mysql_query($sql)) {
// In un successfull log to FireBug
FB::error($data, "SQL error: ".mysql_error());
}

あなたはまた、独自のFB ::エラーコールを実装することができます関数を変更してこの動作を後で無効にすることができます。


function log_error($data, $msg){
//dont forget to deactivate in case the application goes live!
FB::error($data, $msg);
}
if (!mysql_query($sql)) {
// In un successfull log to FireBug
log_error($data, "SQL error: ".mysql_error());
}

1

前に述べているものに加えて、私は私の最近の発見追加することができます。

でtrigger_error(しますprint_r($ your_var、1)、E_USER_ERRORを)。

単純なエコーが役に立たないリダイレクトを伴う複雑なスクリプトであっても、変数を出力してデバッグすることができます。

ドミトリ。

0

CodeChargeのほとんどのデータベース接続クラスには、ページの上部にすべてのページのデータベースコマンドを自動的に書き込む 'デバッグ'フラグがあります。

例えば、私の古いPHPプロジェクト、 '共通ファイル' 内のファイル 'db_mysql.php'(行27): '1' に

public $Debug   = 0;  ## Set to 1 for debugging messages. 

変更し、そのファイルを公開します。 Webページを読み込みます。完了したら変更して再公開してください。

私はこれをCCSでPHPプロジェクトやASPプロジェクトに使用しましたが、他の言語(.NETプロジェクトで見つかるかどうかわかりません)の可能性があります。

関連する問題