1

ユーザーが最後にログインした時刻でユーザー データベースを更新する簡単なクエリを作成しようとしています。SQL データベースにはいくつかの列がありますid | first_name | last_name | username| password | date_created | last_login。実行しようとしているクエリは次のとおりです。

$sql="INSERT INTO (CLL_users) SET last_login= $dateCreated WHERE username= $username";
$result=mysql_query($sql);

検証が成功した後にロードされたページのコード全体を次に示します。SQL インジェクションのために使用する最悪の方法であることに気付きましたが、適切なクエリを取得したら、PDO 準備済みステートメント用に再コーディングします。これは私が見つけた例にすぎません別の Web サイトで、last_login パラメーターを追加するように変更しています。

<?php
session_start();
$host="localhost"; // Host name 
$username="user"; // Mysql username 
$password="XXXXX"; // Mysql password 
$db_name="DB"; // Database name 
$tbl_name="users"; // Table name 
date_default_timezone_set('America/Chicago');
$dateCreated = date('m/d/Y h:i:s a', time());

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$sql="INSERT INTO (CLL_users) SET last_login= $dateCreated WHERE username= $username";
$result=mysql_query($sql);

if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>

<html>
    <head>
        <title> Welcome</title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <LINK href="CLL.css" rel="stylesheet" type="text/css">
    </head>
 <body>
     <?php echo $dateCreated ?>
<p>Login Successful</p>
</body>
</html>
4

5 に答える 5

3
$sql="update CLL_users SET last_login= $dateCreated WHERE username= $username";
$result=mysql_query($sql);
于 2012-11-01T03:51:14.567 に答える
2

dateCreated 変数とユーザー名変数を一重引用符で囲む必要があります。

また、挿入を行うのではなく、update ステートメントを使用して既存のレコードを更新する必要があります。$sql 変数をエコーすると、挿入ステートメントが無効であり、データベースで手動で実行しようとすると機能しないことがわかります。

例えば。$sql="UPDATE CLL_users SET last_login='$dateCreated' WHERE username='$username'";

于 2012-11-01T03:47:29.377 に答える
2

まず、変数を一重引用符で囲むことをお勧めします。次に、挿入に次の構文を使用することをお勧めします。INSERT INTO table (COLUMN1, COLUMN2,COLUMN3) VALUES('value1','value2','value3')

また、何かを挿入するのではなく行を更新する場合は、INSERT INTO を UPDATE に置き換えます。

于 2012-11-01T03:50:21.723 に答える
2

エラーの原因は、テーブルを更新する場合は、Set オプションを使用して挿入クエリを使用しないことです。SQL 変数については、これに従います。

 $sql = "UPDATE CLL_users SET last_login= '$dateCreated' WHERE username='$username'";

挿入 用ドキュメント 更新用ドキュメント

于 2012-11-01T03:52:29.270 に答える
1

INSERT を使用して、テーブル内の既存のレコードを更新することはできません。UPDATE クエリを使用する

$sql="UPDATE CLL_users SET last_login= '$dateCreated' WHERE username= '$username'";
于 2012-11-01T03:48:55.783 に答える