$ PHP_SELF在页面加载后立即执行

时间:2012-06-28 09:49:09

标签: php mysql html

我创建了一个HTML页面,用于将数据输入MySQL数据库。我在同一个HTML页面中嵌入了PHP代码。这是代码,

<html>
<head>
</head>
<body>

<?php

/* Database connection operations */
require_once("db_handler.php");

$conn = iniCon();
$db = selectDB($conn);

?>

<b id="loc_caption_1">Enter a new location</b>
<div id="loca">
    <form name="locForm" action="<?php echo $PHP_SELF; ?>" method="post" >
        <table width="300" border="0">
          <tr>
            <td>Location ID</td>
            <td><input type="text" name="lid" readonly="readonly" value="<?php echo $new_id; ?>" style="text-align:right" /></td>
          </tr>
          <tr>
            <td>Code</td>
            <td><input type="text" name="code" style="text-align:right" /></td>
          </tr>
          <tr>
            <td>Location</td>
            <td><input type="text" name="loc" style="text-align:right" /></td>
          </tr>
        </table>
</div>
<br/>
<div id="buttons">
    <input type="reset" value="Clear" /> <input type="submit" value="Save" />
</div>
    </form>

<?php

/* Saving new record */
$id = $_POST["lid"];
$code = $_POST["code"];
$location = $_POST["loc"];

$query = "INSERT INTO locations(LID, Code, Location) VALUES('$id', '$code', '$location')";

if (!mysql_query($query, $conn))
{
    die("Error " . mysql_error());
}
else
{
    echo "<br/><br/>";
    echo "1 record added successfully!";
    echo "<meta http-equiv=\"refresh\" content=\"3;URL=locations.php\">";
}

mysql_close($conn);

?>

</body>
</html>

我遇到的问题是,为了将数据插入数据库而编写的PHP代码块在页面加载后立即执行一次。我怎么能阻止这种情况发生?我希望它等到我将数据输入表单,然后按下提交按钮,然后执行。

谢谢。

9 个答案:

答案 0 :(得分:1)

您需要检查是否已提交任何数据,然后才开始工作:

if (!empty($_POST)) {
    ...
}

答案 1 :(得分:1)

您保存数据的代码应该在if (!empty($_POST))块中。

答案 2 :(得分:1)

您只需要检查是否提交。

<?php
if(isset($_POST['submit']))  // Check if form submitted or not
{
  --- //Code for insert to database.
}
?>

答案 3 :(得分:1)

首先给帖子按钮命名,如

<input type="submit" value="Save" name="GoBtn" />

在下面的包装器

中提交后执行代码
if(isset($_POST['GoBtn'])
{
  //code here
}

答案 4 :(得分:1)

将php代码放在IF

if(isset($_POST["submit"])){ // if form is submitted
 // do insert things
}

答案 5 :(得分:1)

您将php页面解释为流程:它表示首先显示表单,然后执行 php代码部分,插入空值(我猜)。

在脚本部分中,您必须使用以下内容测试表单显示上下文或表单提交上下文:

if ($_POST) {
   // form submit context
}

答案 6 :(得分:1)

将提交按钮标记更改为:

<input type="submit" name="submitForm" value="Save" />

在执行插入的PHP代码之前,请检查submitForm为:

if(isset($_POST["submitForm"]){
//follow the insertion PHP code
}

答案 7 :(得分:1)

  1. 在插入数据库之前,您必须检查$ _POST中是否有可用的变量。

    if(!empty($ _ POST [“lid”])){
    / *保存新纪录* / $ id = mysqli_real_escape_string($ _ POST [“lid”]); $ code = mysqli_real_escape_string($ _ POST [“code”]); $ location = mysqli_real_escape_string($ _ POST [“loc”]);

    $ query =“INSERT INTO位置(LID,代码,位置)VALUES('$ id','$ code','$ location')”;

    if(!mysql_query($ query,$ conn)) {     死(“错误”.mysql_error()); } 其他 {     echo“

    ”;     echo“1条记录成功添加!”;     echo“”; }

    mysql_close($ conn);在 }

  2. 使用mysqli_ *函数,mysql_ *函数现已弃用。

  3. 在插入数据库之前使用mysqli_real_escape_string()以防止sql注入。
  4. 您应该将此数据库插入区域移动到页面顶部并使用“header('location:locations.php');”用于重定向。

答案 8 :(得分:0)

根据发布数据的存在执行PHP代码块。 对于精炼,您甚至可以在语义上测试发布的值。

if ( (array_key_exists('lid', $_POST) 
AND  (array_key_exists('code', $_POST) 
AND  (array_key_exists('loc', $_POST) ) {
   then execute PHP code block
}