2014-09-23 89 views
-1

我已經檢查並重新檢查了我的代碼,以瞭解我正在執行的教程,但我仍然無法弄清楚它有什麼問題。一些幫助將不勝感激。php和mysql代碼

我正在構建一個處理來自另一頁面的表單數據的頁面。下面是我遇到麻煩的部分標記。

<pre> 
if (isset($_POST['submit'])) { 
// Process the form 

$subject_id = $_GET["subject"];    
$pageName = $_POST["pageName"]; 
$pagePosition = $_POST["pagePosition"]; 
$pageVisible = $_POST["pageVisible"]; 
$pageContent = $_POST["pageContent"]; 

if (!empty($errors)) { 
$_SESSION["errors"] = $errors; 
redirect_to("new_page.php"); 
} 

$query = "INSERT INTO pages (subject_id, menu_name, position, visible, content) VALUES  ('{$subject_id}' , {$pageName}, {$pagePosition} ,{$pageVisible} ,{$pageContent})"; 

$result = mysqli_query($connection, $query); 

if ($result) { 
// Success 
$_SESSION["message"] = "Page created."; 
redirect_to("manage_content.php"); 
} else { 
// Failure 
$_SESSION["message"] = "Page creation failed."; 
redirect_to("new_page.php?subject={$subject_id}"); 
} 

</pre> 

我已經簽出了提交到表單處理頁面並提交表單正確提交的頁面。我也檢查了我引用的所有外部函數,並且它們都工作。另外,使用$ _GET超全局的第一個變量工作得很好。問題是查詢以某種方式無法拉入4 $ _POST變量。如果我用硬代碼值替換所有變量值,查詢就會正常進行,並在我的表中創建一個新行。 任何與此有關的幫助將不勝感激,因爲我已經多次檢查並重新檢查了這一點,我確信我錯過了一些非常小的東西,但這讓我發瘋。 謝謝。

+0

如果您已經在使用MySQLi,那麼您在SQL的變量周圍缺少引號,並且應該使用準備好的語句。您的代碼容易受到SQL注入和XSS – ILikeTacos 2014-09-23 15:19:21

+0

使用縮進! – Edward 2014-09-23 15:22:53

回答

2
在你的字符串值

你缺少報價:如果您檢查使用mysqli_error()錯誤

$query = "INSERT INTO pages (subject_id, menu_name, position, visible, content) VALUES  ('{$subject_id}' , '{$pageName}', {$pagePosition} ,{$pageVisible} ,'{$pageContent}')"; 

這將是顯而易見的。

+2

或者他是否會使用準備好的語句。 – DanFromGermany 2014-09-23 15:19:08

+1

+1如果你正在學習,你應該使用所有的錯誤報告,你可以得到你的手! – Edward 2014-09-23 15:21:28

+0

謝謝你。 – user3058091 2014-09-23 15:35:26