0

以下の値を持つテーブルがあります。

Table
-----------------------------------------------------------
Column               | Type           | Default
-----------------------------------------------------------
name                   varchar(100)     none
loginCount             int(11)          0
lastLoginDate          datetime         0000-00-00 00:00:00
-----------------------------------------------------------

ここで、ユーザーが適切にログインしているかどうかを確認し、ログインしている場合はそれに応じて更新loginCountlastLoginDateます。

スクリプトは次のphpとおりです。

<?php
  // Verification query..
  if($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $sql = "UPDATE table
               SET `loginCount` = `loginCount` + 1,
                   `lastLoginDate` = now()
             WHERE `name` = '".$username"'";
    $result = mysql_query($sql);
  }
?>

問題は、これが機能していないことです。

ただし、コンソールに直接ログインして同じものを使用するとmysql、更新が行われます!

ここで何が間違っているのか教えてください。

ありがとうございました!

4

1 に答える 1

2

.終了引用符の前に for 連結がありません

WHERE `name` = '".$username"'";
//------------------------^^^

する必要があります

WHERE `name` = '".$username . "'";
//--------------------------^^^

または、二重引用符で囲んでいるため、連結を省略します。

$sql = "UPDATE `table` SET ..... WHERE `name` = '$username'";

これは、おそらく error_reporting が有効になっていないか、構文エラーが表示されることを意味します。

何かのようなもの:

解析エラー: 構文エラー、予期しない '"'"' (T_CONSTANT_ENCAPSED_STRING)...

ini_set('display_errors', 1);
error_reporting(E_ALL);

最後に、問題は発生しないはずです。投稿されたコードに基づくとは思いませんが$result、最初の (ここでは表示されていない) クエリの結果リソース変数である を再利用するのは賢明ではありません。TRUE/FALSEfromUPDATEステートメントによって上書きされると、後で必要に応じて再度取得することはできません。UPDATE成功/失敗には別の変数を使用してください。

$other_var_not_result_for_clarity = mysql_query($sql);
于 2013-02-15T03:05:13.220 に答える