最初のことから始めましょう:
if($_POST[ind_reset]) {
する必要があります
if($_POST['ind_reset']) {
PHP がエラーを黙って修正しているため、引用符なしで動作します。エラー報告を E_ALL にすると、エラー メッセージが表示されます。
考慮しなければならないことの 1 つは、POST データが想定どおりであるとは決して信頼できないということです。多分あなたはタイプミスをしました。ハッカーが偽の POST データを送信している可能性があります。いずれにせよ、そのデータベースの更新に間違ったものが入れられると、コードが台無しになります。このため、単純にその POST 値をデータベースにプラグインするのではなく、値が有効であることを確認するチェッカーが必要です。このようなことを行うとき、可能な値の配列を作成し、データベースへの更新または挿入時にそれらの値のみを使用します。例:
$pages = array('value_on_page'=>'value_put_in_database',
'xyz'=>'thing_in_database_2');
//the valid things to post are either 'value_on_page' or 'xyz',
//but what goes into the database are the values those keys point to
//e.g. if $_POST['ind_reset'] == 'xyz', $ind_reset will be 'thing_in_database_2'
$key = $_POST['ind_reset'];
if(!isset($pages[$key])) {
//if that posted value isn't a key in the array, it's bad
error_log('Invalid posted page'.$key);
} else {
//this is a valid posted page
$ind_reset = $pages[$key];
//** do the database stuff right here in this spot **//
}
さて、投稿したコードが機能しないという理由で、データベース クエリを実行する最後の重要な部分、つまり実際にクエリを実行する部分が欠けています。
$conn = mysql_connect("server", "username", "password") or error_log(mysql_error());
mysql_select_db("database") or error_log(mysql_error());
$sql = 'UPDATE counters SET Hits =\'0\' WHERE Page = \'$ind_reset\';';
mysql_query($sql, $conn) or error_log(mysql_error());
「die」を「error_log」に置き換えたことにお気づきでしょうか。error_log(mysql_error(), 1, 'youremail@example.com') を実行すると、メールで送信されます。それ以外の場合は、私の例のように、システムのエラー ログ ファイルがどこにでも置かれます。その後、データベース エラーの優れた履歴を保持できるため、必然的に StackOverflow に戻ってさらに質問をするときに、何が起こっているのかを正確に伝えることができます。ファイルを使用する場合は、エラー ログ ファイルの名前をローテーションするか (私はその日の日付に従って名前を付けています)、定期的にクリアするようにしてください。
コメントに投稿した mysqli コードを使用することは、mysql_* 関数よりも優れたアイデアですが、完全には正しくありません。「bind_param」部分は、変数を疑問符のある場所に貼り付けます。変数が文字列の場合は "s" を最初に置き、整数の場合は "i" を最初に置きます。
$db = new mysqli("server", "username", "password", "database");
if(!$db->connect_errno) {
$stmt = $db->prepare("UPDATE counters SET Hits = '0' where Page = ?");
$stmt->bind_param('s',$ind_reset); //assuming $ind_reset is a string
if(!$stmt->execute()) {
error_log($stmt->error);
}
$stmt->close();
} else {
error_log($db->connect_error);
}
$db->close();