仅在某些条件下将行插入MYSQL数据库

时间:2011-08-22 04:10:39

标签: php html mysql insert

在阅读之前,请注意我对PHP和MYSQL都很新。我在MYSQL数据库中创建了一个表。我现在想通过PHP将这个表“吐出”到一个页面上。这部分我似乎没问题。将表数据输出到HTML表后,我想在我的页面上输出一个HTML表单。所以,我现在有一个表格,后跟一个表格。此表单将包含一些文本框,在提交时,会将用于插入新行的数据发布到上述预先存在的表中。

以上所有代码目前都在一个名为“display.php”的PHP文件中。

我的问题:

如果上述表单回发到我的'display.php'文件,在插入新行并显示新表信息后,是什么阻止我的代码插入另一个充满NULL数据的新行?我确信我在解释这个场景方面做得不够好,所以我会发布一些代码。

HTML / PHP

<html>
<head> 
    <title>Html and PHP</title>
</head>

<body>

<!-- Form -->
<form action="insertdata.php" method="post">
Username: <input type="text" name="username" >
Hardware ID: <input type="text" name="hardwareid" >
<input type="submit" >
</form>

<?php

// Connect to MYSQL
$con = mysql_connect("localhost","blah","private");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// Select database
mysql_select_db("dbname", $con);

// Insert posted data into table
$sql="INSERT INTO tablename(
Username,
HardwareID)

VALUES
('$_POST[username]','$_POST[hardwareid]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record successfully added...";

mysql_close($con)
?>

</body>
</html>

同样,我是一个完全的初学者 - 我理解这一点。我想知道,上面代码的不同部分必须放在多个文件中吗?我不想去一个新的地址,这就是为什么这会让我如此混乱。

2 个答案:

答案 0 :(得分:2)

尝试这样的事情,

connection.php文件

    // Connect to MYSQL
$con = mysql_connect("localhost","blah","private");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// Select database
mysql_select_db("dbname", $con);

display.php文件

    <html>
<head> 
    <title>Html and PHP</title>
</head>

<body>

<!-- Form -->
<form action="process.php" method="post">
Username: <input type="text" name="username" >
Hardware ID: <input type="text" name="hardwareid" >
<input type="submit" >
</form>

</body>
</html>

process.php文件

    include_once("ur_file_dir/connection.php");

    if ((isset($_POST['username']) && isset($_POST['hardwareid'])) {

      $sql="INSERT INTO tablename(
         Username,
         HardwareID)

         VALUES
            ($_POST['username'],$_POST['hardwareid'])";
      if (!mysql_query($sql,$con))
      {
          die('Error: ' . mysql_error());
      }
      echo "1 record successfully added...";

      mysql_close($con)

}

答案 1 :(得分:1)

您应该验证您的输入,即:

if (!empty($_POST['username'] && !empty($_POST['hardwareid']) {
    // do your insert here
}

此外,您应该谨慎地允许将用户输入直接插入到您的查询中,因为这会让您对SQL injections保持开放状态。更好的方法是使用PDO和预处理语句:

http://php.net/manual/en/pdo.prepared-statements.php