0

MVC フレームワークを使用していますが、SQL クエリに問題があります。

私のウェブサイトに投稿を公開したユーザーは、確認 URL を含む電子メールを受け取ります。

mywebsite.com/confirm/f9b83b3bf994e5db3b06ya20eb306a24/

ルーティングは正しく行われていますが、SQL の "published" フィールドを 1 に変更したい (デフォルトでは 0 に設定されています)。

したがって、基本的に、私の UPDATE SQL クエリ以外はすべて機能しています。これはおそらくばかげたことですが、私はこのドメインの初心者であり、何度も試行しても修正できませんでした。

    if(substr(ROUTE, 0, 8) == 'confirm/')
        {
            if(strlen($code = substr(ROUTE, 8, 32)) == 32)
            {
                if($row = db::fetch(db::query('SELECT `id` FROM `'.DB_PREFIX.'Posts` WHERE `published`=0 AND `confirm`="'.db::escape($code).'"'), 'row'))
                {

//This is the problematic line
                 db::query('UPDATE '.DB_PREFIX.'Posts SET published=1 WHERE published=0 AND confirm="'.db::escape($code).'"');

                }
            }

            header('Location: '.WEB.'publish_success.html');
        } 

ご協力ありがとうございました :)

編集:WHERE句を追加する際の問題が修正されました!

4

2 に答える 2

3

UPDATE コマンドに WHERE 句がありません。

db::query('UPDATE `'.DB_PREFIX.'.Posts` SET `published`=1 WHERE id = ' . $row['id'] );
于 2012-11-01T15:32:58.717 に答える
1

以下のクエリを試してみてください。うまくいくかどうかは正確にはわかりません。

  db::query("UPDATE `".DB_PREFIX."Posts` SET `published`=1 WHERE `published`=0 AND `confirm`='".db::escape($code)."'");
于 2012-11-01T15:45:52.407 に答える