第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WHERE 語句在應(yīng)該更新數(shù)據(jù)的 SQL 中不起作用

WHERE 語句在應(yīng)該更新數(shù)據(jù)的 SQL 中不起作用

PHP
森林海 2022-10-14 14:29:09
這次我試圖在用戶個人資料上進行最后一次看到。我在我的 phpmyadmin 中添加了一個名為 lastseen 的列,類型為“DATETIME”。當用戶注銷時,lastseen 應(yīng)該更新為當前的日期和時間。所以我在我的注銷腳本中創(chuàng)建了一個 SQL 來更新這個值。當我測試它時,它并沒有像往常一樣工作。嘗試了很多東西,但沒有任何幫助。我發(fā)現(xiàn)如果沒有我的 WHERE 語句,日期只會按應(yīng)有的方式更新,但遺憾的是所有用戶。所以 SQL 中需要 WHERE 語句。我在沒有它的情況下測試后將其添加回來,但它不再工作,這讓我確定它與 WHERE 有什么關(guān)系,但我真的不明白是什么。這是我的注銷腳本:<?phpsession_start();session_unset();  // Well.. One of these two  will definitely work!session_destroy();// Updatinginclude('C:\xampp2\htdocs\settings\sh_config.php');include('./static/index/scripts/session_start.php');$conn = mysqli_connect($database['host'], $database['user'],  $database['password'], $database['db'], $database['port']);$last_timestamp = date("Y-m-d H:i:s");$last_user = $_SESSION['username'];$lastseen_query = mysqli_query($conn, "UPDATE users SET lastseen='$last_timestamp' WHERE username = '$last_user'");header('Location: /');$conn->close();?>“sh_config.php”的包含是私有的,但我會告訴它在這個腳本中的作用。很簡單的答案:我在該文件中配置了數(shù)據(jù)庫連接。因此, $database 的所有內(nèi)容都在該文件中正確配置。嗯,如你所見,里面有很多信息?;旧?,這管理著注冊和登錄以及使用用戶 ID 重定向到唯一配置文件的所有內(nèi)容。我認為這個文件可能會派上用場,因為在這個文件中定義了 id 和用戶名。如果您看起來不錯,您會看到我將此文件包含在我的注銷腳本中,因此定義的單詞應(yīng)該可以正常工作,但它們不能。嘗試在沒有包含的情況下在文件中重新定義它也不起作用。哦,順便說一句,我使用 MySQLi。
查看完整描述

1 回答

?
斯蒂芬大帝

TA貢獻1827條經(jīng)驗 獲得超8個贊

您的代碼中有一個錯誤,即當用戶使用他們的電子郵件地址登錄時,該地址存儲在$_SESSION['username']. 在您的注銷腳本中,您假設(shè)這實際上是他們的用戶名,而實際上可能不是。將您的更新查詢更改為這樣的內(nèi)容,您的問題可能會得到解決:


UPDATE users

SET lastseen='$last_timestamp'

WHERE username = '$last_user'

  OR email = '$last_user';

雖然這可能有效,但我建議使用您的寶貴用戶id。不要比較容易出現(xiàn)各種錯誤(大小寫錯誤的字母、前導/尾隨空格、不同編碼等)的字符串,而是比較您的 ID。這不僅使事情更不容易出錯,而且還會減少您的計算時間,尤其是在數(shù)據(jù)庫查找的上下文中。


$_SESSION['user_id'] = $user_id['id']; // or $gen_id['id'] in the signup code.

$last_user = $_SESSION['user_id'];

$lastseen_query = mysqli_query($conn, "UPDATE users SET lastseen='$last_timestamp' WHERE id = '$last_user'");

將來要自己調(diào)試此類問題,您可以使用一種流行的、快速而骯臟的方式來轉(zhuǎn)儲變量的內(nèi)容:打印/回顯創(chuàng)建用戶時的值并回$username顯在上面的腳本更新數(shù)據(jù)庫中最后看到的值,如下所示:$email$username


$username = mysqli_real_escape_string($db, $_POST['username']);

$email = mysqli_real_escape_string($db, $_POST['email']);


var_dump($username);

var_dump($email);

$last_user = $_SESSION['username'];


var_dump($last_user);

$last_user如果匹配的轉(zhuǎn)儲$email您知道上述錯誤適用并且是您的腳本行為不端的原因。您可能還會發(fā)現(xiàn)字符串值存在一些問題(可能在某些時候出現(xiàn)意外突變),這會導致 SQL 查詢中的比較失敗。


查看完整回答
反對 回復 2022-10-14
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號