1

だから私は最もばかげた状況で髪を引っ張っています...私はMySQL DBに新しい時間を節約しようとしており、これを機能させるために考えられるすべてを試しましたが、一部の場合はできません理由。これが私が持っているものです...

$_ = gmdate("Y-m-d H:i:s",time());
if (! mysql_query("UPDATE Accounts 
    SET likes='1',update='".$_."' 
    WHERE username='".$_POST['username']."'")) { ... }

私はもう試した:

update=FROM_UNIXTIME(".$_.")
update=UNIX_TIMESTAMP(".strtotime($_).")
update=UNIX_TIMESTAMP('".strtotime($_)."')
update='".UNIX_TIMESTAMP(strtotime($_))."'
update='".UNIX_TIMESTAMP($_)."'
update='".$_."'

どんな助けでも大歓迎です!ありがとう、デイブ

4

3 に答える 3

1

update列名として使用する場合は、予約語であるため、バッククォートでエスケープする必要があります。の値は$_、フィールド自体には問題ありません。

mysql_query(" ... SET likes = 1, `update` = '$_' ...")

そして別のこと。$_POST['username']SQL インジェクションを避けるために、の値をエスケープする必要があります。

" ... WHERE username='" . mysql_real_escape_string($_POST['username']) . "'");

次のように、フォーマット文字列を使用してすべてを結合することもできます。

$sql = sprintf("UPDATE Accounts SET likes='%d',`update`=%s' WHERE username='%s'", 
    1,
    $_,
    mysql_real_escape_string($_POST['username'])
);

$res = mysql_query($sql) or die("yikes: " . mysql_error());

また:

mysql_*新しいコードで関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスがか? 代わりに準備済みステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2013-01-22T14:34:40.693 に答える
0
mysql_query("UPDATE Accounts SET likes='1',update='".$_."' WHERE username='".$_POST['username']."'")

now()クエリ内には、 またはcurdate()関数の 2 つのオプションがあります。

now()、日付とタイム スタンプを形式で返します。YYYY-MM-DD HH:MM:SS

curdate()YYYY-MM-DD の形式で日付を返します。

クエリは次のようになります。

mysql_query("UPDATE Accounts SET likes='1', `update`='now()' WHERE username='".$_POST['username']."'")

バックティックに注意してください。これは予約語であるため、更新時に使用する必要があります。列名として使用できるように、予約をエスケープする必要があります。

mysql_*新しいコードで関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスがか? 代わりに準備済みステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2013-01-22T14:35:16.743 に答える
0

updateは MySQL 構文のキーワードです。フィールドに名前を付けるべきではありませんupdate。次のような名前を付けてみてください:updated_atまたは updated_date

これができない場合は、クエリでフィールド名を引用する必要があります。

"UPDATE Accounts 
SET likes='1',`update`='".$_."' 
WHERE username='".$_POST['username']."'"
于 2013-01-22T14:37:09.813 に答える