我有一個網站,用戶可以登錄並將項目添加到列表中。添加用戶ID到用戶列表的MySQL表中的不穩定問題
在用戶登錄和會話存儲他們的電子郵件,我用它來識別它們在用戶表。
然後,他們可以輸入一個列表項,並添加到包含他們的ID和他們的列表項的列表表。
有時會添加ID並且有時會出現空(但是,總是添加列表項文本)。這似乎是不穩定的,因爲大部分時間都包含了ID。
任何想法?表類型是MyISAM。順便說一句,我是編程新手。
這裏是我的代碼示例:
<?php
session_start();
$item = $_REQUEST['item'];
$email = $_SESSION['email'];
if ($item)
{
mysql_connect("localhost","root","") or die("We couldn't connect!");
mysql_select_db("table");
$query = mysql_query("SELECT ID FROM users WHERE email='".$_SESSION['email']."'");
$result = mysql_result($query,0);
$user_id = $result;
mysql_query("INSERT INTO items (user_ID,item_name) VALUES('$user_id','$item')");
所以每次我登錄到我的網站我自己都沒有問題,測試的時間。但越來越多,我有用戶嘗試添加項目,並創建一個記錄,其中item_name正確顯示,但user_ID設置爲0(默認)。
也許他們的會話超時?會話開始會創建一個新的減去電子郵件。 –
爲什麼不將user_id存儲在會話中?這樣,每次插入項目時都不必查詢它。另外,你的代碼對SQL注入攻擊是開放的。你真的應該做'$ item = mysql_real_escape_string($ _ REQUEST ['item']);'因爲有人可以在請求中注入SQL代碼,並且你很想保護它。更好的是,學習如何使用[PDO](http://php.net/manual/en/book.pdo.php)及其對[準備好的語句]的支持(http://www.php.net/manual/en /pdo.prepared-statements.php)與您的數據庫進行交互。 mysql_ *函數已被棄用。 –