2014-09-23 79 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