2013-02-11 134 views
1

這裏是我的代碼(長度道歉):PHP Session變量返回空白

$companyid = $_SESSION["companyid"]; 

$_SESSION["youtubeurl"] = mysql_real_escape_string($_POST["youtubeurl"]); 
$_SESSION["logourl"] = mysql_real_escape_string($_POST["logourl"]); 

$_SESSION["plan1head"] = mysql_real_escape_string($_POST["plan1head"]); 
$_SESSION["plan1description"] = mysql_real_escape_string($_POST["plan1description"]); 
$_SESSION["plan1headline1"] = mysql_real_escape_string($_POST["plan1headline1"]); 
$_SESSION["plan1price1"] = mysql_real_escape_string($_POST["plan1price1"]); 
$_SESSION["plan1headline2"] = mysql_real_escape_string($_POST["plan1headline2"]); 
$_SESSION["plan1price2"] = mysql_real_escape_string($_POST["plan1price2"]); 

$_SESSION["plan2head"] = mysql_real_escape_string($_POST["plan2head"]); 
$_SESSION["plan2description"] = mysql_real_escape_string($_POST["plan2description"]); 
$_SESSION["plan2headline1"] = mysql_real_escape_string($_POST["plan2headline1"]); 
$_SESSION["plan2price1"] = mysql_real_escape_string($_POST["plan2price1"]); 
$_SESSION["plan2headline2"] = mysql_real_escape_string($_POST["plan2headline2"]); 
$_SESSION["plan2price2"] = mysql_real_escape_string($_POST["plan2price2"]); 

$_SESSION["plan3head"] = mysql_real_escape_string($_POST["plan3head"]); 
$_SESSION["plan3description"] = mysql_real_escape_string($_POST["plan3description"]); 
$_SESSION["plan3headline1"] = mysql_real_escape_string($_POST["plan3headline1"]); 
$_SESSION["plan3price1"] = mysql_real_escape_string($_POST["plan3price1"]); 
$_SESSION["plan3headline2"] = mysql_real_escape_string($_POST["plan3headline2"]); 
$_SESSION["plan3price2"] = mysql_real_escape_string($_POST["plan3price2"]); 

$_SESSION["plan1price1type"] = $_POST["plan1price1type"]; 
$_SESSION["plan1price2type"] = $_POST["plan1price2type"]; 
$_SESSION["plan2price1type"] = $_POST["plan2price1type"]; 
$_SESSION["plan2price2type"] = $_POST["plan2price2type"]; 
$_SESSION["plan3price1type"] = $_POST["plan3price1type"]; 
$_SESSION["plan3price2type"] = $_POST["plan3price2type"]; 

mysql_connect("localhost", "name", "password") or die(mysql_error()); 
mysql_select_db("database") or die(mysql_error()); 

$getstats = mysql_query("SELECT * FROM company WHERE companyid = 
'$companyid'"); 

$stats = mysql_fetch_array($getstats); 

$calculaterating = $stats["ratingscore"]/$stats["ratingcount"]; 

if (!$calculaterating) { 

$rating = "None"; 

} else { 

$rating = $calculaterating; 

} 

$usage = $stats["usage"]; 

if(isset($_POST["submitpreview"])) { 

$companyid = $_SESSION["companyid"]; 

$youtubeurl = $_SESSION["youtubeurl"]; 
$logourl = $_SESSION["logourl"]; 

$plan1head = $_SESSION["plan1head"]; 
$plan1description = $_SESSION["plan1description"]; 
$plan1headline1 = $_SESSION["plan1headline1"]; 
$plan1price1 = $_SESSION["plan1price1"]; 
$plan1headline2 = $_SESSION["plan1headline2"]; 
$plan1price2 = $_SESSION["plan1price2"]; 

$plan2head = $_SESSION["plan2head"]; 
$plan2description = $_SESSION["plan2description"]; 
$plan2headline1 = $_SESSION["plan2headline1"]; 
$plan2price1 = $_SESSION["plan2price1"]; 
$plan2headline2 = $_SESSION["plan2headline2"]; 
$plan2price2 = $_SESSION["plan2price2"]; 

$plan3head = $_SESSION["plan3head"]; 
$plan3description = $_SESSION["plan3description"]; 
$plan3headline1 = $_SESSION["plan3headline1"]; 
$plan3price1 = $_SESSION["plan3price1"]; 
$plan3headline2 = $_SESSION["plan3headline2"]; 
$plan3price2 = $_SESSION["plan3price2"]; 

$headlines = $_SESSION["headlines"]; 

$plan1price1type = $_SESSION["plan1price1type"]; 
$plan1price2type = $_SESSION["plan1price2type"]; 
$plan2price1type = $_SESSION["plan2price1type"]; 
$plan2price2type = $_SESSION["plan2price2type"]; 
$plan3price1type = $_SESSION["plan3price1type"]; 
$plan3price2type = $_SESSION["plan3price2type"]; 

mysql_connect("localhost", "name", "password") or die(mysql_error()); 
mysql_select_db("database") or die(mysql_error()); 

$islisted = mysql_query("SELECT * FROM companypage WHERE companyid = '$companyid'"); 

if ($islisted) { 
mysql_query("UPDATE companypage SET 
plan1head = '$plan1head', 
plan1description = '$plan1description', 
plan1price1type = '$plan1price1type', 
plan1headline1 = '$plan1headline1', 
plan1price1 = '$plan1price1', 
plan1price2type = '$plan1price2type', 
plan1headline2 = '$plan1headline2', 
plan1price2 = '$plan1price2', 
plan2head = '$plan2head', 
plan2description = '$plan2description', 
plan2price1type = '$plan2price1type', 
plan2headline1 = '$plan2headline1', 
plan2price1 = '$plan2price1', 
plan2price2type = '$plan2price2type', 
plan2headline2 = '$plan2headline2', 
plan2price2 = '$plan2price2', 
plan3head = '$plan3head', 
plan3description = '$plan3description', 
plan3price1type = '$plan3price1type', 
plan3headline1 = '$plan3headline1', 
plan3price1 = '$plan3price1', 
plan3price2type = '$plan3price2type', 
plan3headline2 = '$plan3headline2', 
plan3price2 = '$plan3price2', 
logourl = '$logourl', 
youtubeurl = '$youtubeurl', 
headlines = '$headlines' 
WHERE companyid='$companyid'") or die(mysql_error()); 

} else { 

mysql_query("INSERT INTO companypage (
companyid, 
    plan1head, 
plan1description, 
plan1price1type, 
plan1headline1, 
plan1price1, 
plan1price2type, 
plan1headline2, 
plan1price2, 
plan2head, 
plan2description, 
plan2price1type, 
plan2headline1, 
plan2price1, 
plan2price2type, 
plan2headline2, 
plan2price2, 
plan3head, 
plan3description, 
plan3price1type, 
plan3headline1, 
plan3price1, 
plan3price2type, 
plan3headline2, 
plan3price2, 
logourl, 
youtubeurl, 
headlines) 

VALUES(
    '$companyid', 
'$plan1head', 
'$plan1description', 
'$plan1price1type', 
'$plan1headline1', 
'$plan1price1', 
'$plan1price2type', 
'$plan1headline2', 
'$plan1price2', 
'$plan2head', 
'$plan2description', 
'$plan2price1type', 
'$plan2headline1', 
'$plan2price1', 
'$plan2price2type', 
'$plan2headline2', 
'$plan2price2', 
'$plan3head', 
'$plan3description', 
'$plan3price1type', 
'$plan3headline1', 
'$plan3price1', 
'$plan3price2type', 
'$plan3headline2', 
'$plan3price2', 
'$logourl', 
'$youtubeurl', 
'$headlines') 
") or die(mysql_error()); 

} 

echo "<script>window.close();</script"; 

} 

從本質上講,這裏發生了什麼是一個用戶一個網頁,有自己是可以通過一系列改變表單,下拉菜單等。爲了創建或更新他們的頁面,他們填寫表單並點擊一個預覽按鈕,這是一個target_blank,並且一個新標籤彈出預覽頁面的樣子。先前頁面中的所有變量都先插入會話中供以後使用。在「預覽」頁面上有一個更新按鈕。如果他們喜歡他們看到的內容,他們會點擊更新按鈕(從而在PHP代碼中執行「提交預覽」)。 PHP代碼然後檢查它們是否創建了頁面,並將它們添加到表中或基於變量更新其當前表。

這是我的問題。預覽頁面首次加載時,所有變量(會話或POST)都能正確顯示。但是,在執行提交預覽並將信息存儲在數據庫中時,將存儲以下內容:companyid存儲爲0,其他所有內容在表中存儲爲空白(即使它不應接受空值?) 。這對插入和更新都適用。所以這顯然讓我覺得我的會話變量出錯了(從$ _POST變量加載到頁面的第一個頁面,我知道這是正確的,因爲它們顯示在預覽頁面上)是某種程度上當我將它們傳遞迴執行submitpreview時的正常變量時傳遞錯誤。但是真正阻礙我的是,companyid沒有被正確存儲(存儲爲0而不是正確的id),即使我在其他地方回顯出來,它也顯示正確。我確信我在做什麼是一個簡單的愚蠢的錯誤,但我無法弄清楚。

感謝您的幫助和抱歉代碼和問題的長度。

+1

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit 2013-02-11 17:31:17

+1

似乎是一個非常重複的設置。如果你最終需要'plan4','plan5'等等......?爲什麼不正常化一些東西? – 2013-02-11 17:34:30

回答

2

如果這是您的實際腳本,那麼您在執行所有這些mysql_real_escape_string()調用時尚未連接到MySQL。您必須連接必須才能使用此功能。現在它只是返回一系列布爾FALSE值來表示錯誤。

將您的數據庫連接代碼移動到腳本的開頭,它應該會更好地開始工作。但是,當然,您應該升級到mysqli或PDO,因爲不推薦使用mysql _ *()。

當然,從不假設DB操作已成功。通常檢查返回值是否失敗,例如:

$var = mysql_real_escape_string($_POST['var']) or die(mysql_error()); 
               ^^^^^^^^^^^^^^^^^^^^^^ 

本來會告訴你問題是什麼。

+0

我相信用戶是連接的,因爲一個新行被輸入到數據庫中,但所有的字段都是空白的。 – bowlerae 2013-02-11 17:37:11

+0

@ bowlerae:是的,因爲數據庫連接在m_r_e_s()調用後建立。 – 2013-02-11 17:37:52

+0

謝謝,這確實是答案。由於我不必重新發布所有這些長代碼,我還有另一個問題。現在該頁面不會加載並給我這個錯誤:PHP解析錯誤:語法錯誤,意外的T_IF。它說這個代碼存在問題:「if($ islisted){」,它確定公司頁面是否需要插入或更新。它給了我這個錯誤,不管我是否將其設置爲「if(mysql_fetch_array($ islisted)){」或我現在擁有它。 – 2013-02-11 18:05:11

2

你缺少

session_start(); 

那一定是第一行,你希望使用會話變量的任何文件。

關於這個問題,請參閱php.net documentation

+0

實際上並不正確。您只需在將任何輸出發送到瀏覽器之前調用會話開始 - 並且使用適當的輸出緩衝即使很多問題不成問題。重要的區別。 – 2013-02-11 17:32:51

+0

我在頁面的開頭有session_start(),遺憾的是遺漏了這個。我需要在頁面刷新上重新進行重新設置嗎?一旦submit_preview被執行就意味着什麼? – 2013-02-11 17:33:56

+0

在獲得任何會話變量之前,您將需要'session_start()'語句。如果你有它,那麼也許你的問題是別的。 – Kami 2013-02-11 17:36:53