0

次の関数を使用して mysql エラーをログに記録することについてどう思いますか?

<?php
function sql_query($query)
{
  $q = mysql_query($query);
  if(!$q)
  {
    mysql_query('INSERT INTO mysql_errors (error_query, error_about) VALUES ('.
    $query.', '.mysql_error().' )');
  }
  return $q;
}
?>

便利だと思いますか?どうすれば改善できますか?

4

4 に答える 4

1

次のようにする必要があります。

mysql_query("INSERT INTO mysql_errors (error_query, error_about, error_date) VALUES ('".
    mysql_real_escape_string($query)."', '".mysql_real_escape_string(mysql_error())."',NOW())");

日付フィールドを追加し、入力をサニタイズしました。新しいエラーと古いエラーを区別する方法が必要であり、日付フィールドがそれを行います。

于 2012-11-19T22:14:25.840 に答える
0

適切なエラーを誘発する方法を見つけた場合、これを使用して SQL インジェクションを実行できます。

なぜ MySQL のネイティブ エラー ログを使用しないのでしょうか? それらをDBに戻す理由はありますか?

于 2010-12-01T16:17:59.853 に答える
0

入力をサニタイズしていないようです。$query に '? 別の SQL エラーが発生します。

于 2010-12-01T16:18:24.130 に答える
0

もちろん、データベース接続が既に開いていて、ここで開く必要がない場合、2 番目のクエリの値を一重引用符で囲んでいる限り、関数は期待どおりに機能します。関連して、mysql_error ログは十分ではありませんか?

于 2010-12-01T16:18:38.647 に答える