在阅读之前,请注意我对PHP和MYSQL都很新。我在MYSQL数据库中创建了一个表。我现在想通过PHP将这个表“吐出”到一个页面上。这部分我似乎没问题。将表数据输出到HTML表后,我想在我的页面上输出一个HTML表单。所以,我现在有一个表格,后跟一个表格。此表单将包含一些文本框,在提交时,会将用于插入新行的数据发布到上述预先存在的表中。
以上所有代码目前都在一个名为“display.php”的PHP文件中。
如果上述表单回发到我的'display.php'文件,在插入新行并显示新表信息后,是什么阻止我的代码插入另一个充满NULL数据的新行?我确信我在解释这个场景方面做得不够好,所以我会发布一些代码。
<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>
同样,我是一个完全的初学者 - 我理解这一点。我想知道,上面代码的不同部分必须放在多个文件中吗?我不想去一个新的地址,这就是为什么这会让我如此混乱。
答案 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和预处理语句: