PHP表单未保存到数据表。

3

我有一个名为service.php的页面,它使用模态窗口打开一个表单。表单的动作是service.php。

<div class="modal hide fade" id="myServiceModal" tabindex="-1" role="dialog" aria-labelleby="myModalLabel" aria-hidden="true">
   <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
      <h3 id="myModalLabel">Service Failure Form</h3>
   </div>
   <div class="modal-body">
   <p>
     <form class="well-small" action="service.php" method="POST" id="serviceModalForm" name="serviceModalForm">
        <label>Container Selected</label>
        <input type="text" name="containerNumber" id="containerNumber" />
        <label>Bol Selected</label>
        <input type="text" name="bolNumber" id="bolNumber" />
        <input type="submit" id="modal-form-submit" name="submit" class="btn btn-success btn-small" href="#" value="Save" />

<?php

$bol = $_POST['bolNumber'];                     
$container = $_POST['containerNumber'];

if(isset($_POST['submit'])){
     $sql_query_string = 
           "INSERT INTO import_view_svc_fail (bol, container_num) VALUES 
                                             ('$bol', '$container');";
 if(mysql_query($sql_query_string)){
    echo ("<script language='javascript'>
            window.alert('Added New Service Failure')
            </script>");
}
?>
      </form>

这个表单能够正常使用,并且保存到了相应的表格中。

我的问题是:我不得不将该表单移动到另一个页面,名为dispatch.php。我所做的只是复制代码,并将其放在dispatch.php上。

我更改了表单的操作为dispatch.php,这就是我认为问题开始的地方。当我将操作更改回service.php时,出于某种原因它能够工作。

当我从service.php完全删除表单时,dispatch.php上的表单也无法正常工作。

我已经尝试了一切使它正常工作的方法。我从service.php中删除了所有代码。我甚至从文件夹中删除了整个文件。

任何见解都会有所帮助。


1
你应该研究一下MySQLi或PDO与预处理语句,以帮助防止mysql注入。你有调度版本的代码吗? - user849001
1
请注意 SQL 注入,先生。无论如何:这怎么可能工作?你的 SQL 字符串只是一个字符串,你没有查询它... 你实际上是在其他地方执行查询吗? - briosheje
@Fred - dispatch.php 上的代码完全相同。 - HoodCoderMan
2
@JohnBeasley 我对此有些感觉。很高兴它能够解决问题。但是,为什么你接受了其他答案?那个答案也存在问题吗? - Funk Forty Niner
1
@gloomy.penguin 我也是这么想的,为什么会有那么多赞。 - Funk Forty Niner
显示剩余13条评论
2个回答

0

所以..你需要在service.php中更改这个操作:

<form class="well-small" action="dispatch.php" method="POST" id="serviceModalForm" name="serviceModalForm">

跳转到 dispatch.php

<?php

if(isset($_POST['submit'])) 
{
     $bol = (isset($_POST['bolNumber'])) ? $_POST['bolNumber'] : ''; 

     $container = (isset($_POST['containerNumber'])) ? $_POST['containerNumber'] : '';         

     if (!empty($bol) && !empty($container))
     {
         $sql_query_string = 
               "INSERT INTO import_view_svc_fail (bol, container_num) VALUES 
                                                ('$bol', '$container');";
         // run the query here

         print "<br/><br/>".$sql_query_string."<br/><br/>";
     }
     else { print "<br/><br/>empty values;<br/>"; } 
}
else { print "<br/><br/>\$_POST info not received;<br/>"; }  

?>

提交后打印:

INSERT INTO import_view_svc_fail (bol, container_num) VALUES ('input one value', 'input two value');

你可能需要检查并确保在 if(isset($_POST['submit'])) 语句中获取了所有的 post 值,或者重新整理逻辑...这取决于你是否想允许空值。

此外,请阅读关于 SQL 注入 的相关信息,并了解为什么应该学习使用 mysqli_pdo


是的,谢谢。我已经采取措施防止 SQL 注入。例如:mysql_real_escape_string(stripslashes($container)); - HoodCoderMan
哦,不...尽管如此并不够。 - gloomy.penguin
阅读此内容:read this 或者 this。即使mysql_real_escape_string的PHP文档也表示它不足够... - gloomy.penguin

0

你告诉脚本要做什么,但你没有告诉它去做。

为了执行你的SQL查询,你需要使用mysql_query($sql_query_string);

你还需要连接到你的数据库。请查看http://php.net/manual/de/function.mysql-connect.php获取更多信息。


抱歉,我忘记添加mysql_query代码了。我有它,但上面没有展示出来。 - HoodCoderMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接