当前位置: 首页 > 知识库问答 >
问题:

PHP Form不添加数据到mySQL数据库?

孔永年
2023-03-14

我无法使此表单成功地将数据提交到数据库。我已经验证了数据库/表是否存在(模式如下所示),并且出于某种原因,它没有将其插入数据库。当我尝试提交示例数据时,它不会改变页面,只是坐在那里。发生了什么事?

<body>
<?php if($_SERVER["REQUEST_METHOD"] != "POST"){ ?>
<h1>My Favorite Foods</h1>

<form action="index.php" method="post" id="foodForm">
Name: <input type="text" name="foodname" id="nameField"></input><br />
Type: <select name="foodtype" id="typeField">
<option value="fruit">Fruit</option>
<option value="vegetable">Vegetable</option>
<option value="dairy">Dairy</option>
<option value="meat">Meat</option>
<option value="grain">Grain</option>
<option value="other">Other</option>
</select><br />
Number of Calories: <input type="text" name="foodcals" id="calsField"></input><br />
Healthy? <input type="checkbox" name="foodhealth" value="healthy" id="healthyField"></input><br />
Additional Notes:<br />
<textarea name="foodnotes" id="notesField"></textarea><br />
<input type="submit" value="Add" onclick="validateForm();return false;"></input>
</form>

<?php }else{ ?>
<!-- form handling and output printing stuff goes here -->
<?php $insert = "INSERT INTO Foods(Name, Type, NumCals, Healthy, Notes) VALUES ('$_POST[foodname]', '$_POST[foodtype]', '$_POST[foodcals]', '$_POST[foodhealth]', '$_POST[foodnotes]'"; 
$con = mysqli_connect("localhost","root");
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_select_db("mydb"); 
$result = mysqli_query($con, $insert); 
if ($result) { 
    echo "Food added successfully."; 
    /*while ($row = mysqli_fetch_array($result)) { 
        echo $row['Name'] . ", " . $row['Type'] . ", " . $row['NumCals'] . ", " . $row['Healthy'] . ", " . $row['Notes']; 
        echo "<br>"; 
     } */
} else { 
     echo "Error adding person";  
     mysqli_error($con); 
} 
} ?>
</body>
</html>

模式:

食物(PID INT NOT NULL自动递增,主键(PID),名称VARCHAR(20),类型VARCHAR(9),NumCals INT,健康BOOL,注释文本)

共有1个答案

田博远
2023-03-14

“提交”按钮中的此属性:

onclick="validateForm();return false;"

阻止表单提交return false表示浏览器不应通过单击按钮执行默认操作。

假设validateForm()函数返回一个指示验证是否成功的布尔值,将其更改为:

onclick="return validateForm();"

更改:

} else { 
     echo "Error adding person";  
     mysqli_error($con); 

到:

} else { 
     echo "Error adding person: " . mysqli_error($con); 

以便显示错误消息

您缺少插入语句末尾的

 类似资料:
  • 主要内容:在末尾添加字段,在开头添加字段,在中间位置添加字段MySQL 数据表是由行和列构成的,通常把表的“列”称为字段(Field),把表的“行”称为记录(Record)。随着业务的变化,可能需要在已有的表中添加新的字段。 MySQL 允许在开头、中间和结尾处添加字段。 在末尾添加字段 一个完整的字段包括字段名、数据类型和约束条件。MySQL 添加字段的语法格式如下: ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件]; 对语

  • 我使用命令行在mySQL中成功创建了一个数据库并导入了一些数据。它目前看起来像这样。 我想在表中添加一个名为时间戳的列,我正在使用... 但是我的桌子看起来像这样。。。 我哪里做错了?

  • 我是< code>sqlite数据库的新手,在我的项目中,我需要在创建数据库后添加数据。我尝试了这种方式,这是我的代码。 公共类主要活动扩展活动 { } 我创建了另一个类来打开sqlite数据库。 公共类MySqlHelper扩展SQLiteOpenHelper{ 公共字符串getBird(int id){ 它给我异常 帮助我避免这种情况,并在创建数据库后立即插入数据。

  • 问题内容: 我试图弄清楚如何将以下数据添加到我的json对象。有人可以告诉我该怎么做。 网站范例 我的JSONObject需要合并以上示例。 问题答案: 为了得到这个结果: 拥有与以下相同的数据: 您可以使用以下代码:

  • 添加一条数据 第一种是实例化模型对象后赋值并保存: $user = new UserModel; $user->user_nickname = '老猫'; $user->user_email = 'genmaowan@163.com'; $user->save(); 也可以使用data方法批量赋值: $user = new UserModel; $user->

  • 添加一条数据 使用 Db 类的 insert 方法向数据库提交数据 $user = ['user_nickname'=>'老猫']; Db::name('user')->insert($user); insert 方法添加数据成功返回添加成功的条数,insert 正常情况返回 1 添加数据后如果需要返回新增数据的自增主键,可以使用getLastInsID方法: Db::name('user')-