PHP Form 没有向 mySQL 数据库添加数据?
Posted
技术标签:
【中文标题】PHP Form 没有向 mySQL 数据库添加数据?【英文标题】:PHP Form not adding data to mySQL database? 【发布时间】:2013-10-12 19:40:12 【问题描述】:我无法让此表单成功将数据提交到数据库。我已经验证了数据库/表存在(如下图所示),并且由于某种原因它没有将其插入数据库。当我尝试提交示例数据时,它不会更改页面而只是坐在那里。到底是怎么回事?
<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 AUTO_INCREMENT,PRIMARY KEY(PID),Name VARCHAR(20),Type VARCHAR(9),NumCals INT,Healthy BOOL,Notes TEXT)
【问题讨论】:
【参考方案1】:提交按钮中的这个属性:
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);
这样会显示错误信息。
而您在INSERT
语句末尾缺少)
。
【讨论】:
我现在收到一条错误消息,提示它无法添加食物。我的插入语句有问题吗?如果有,是什么? 我如何弄清楚 mysqli_error() 显示的内容?它只是呼应“无法添加食物”。 您缺少INSERT
语句末尾的右括号。
@GaryHayes 在插入数组值时,除非将引号括在 ...
中,否则会省略引号。
将您的错误代码更改为echo "Food cannot be added: " . mysqli_error();
。您正在调用错误函数,但没有显示它返回的消息。以上是关于PHP Form 没有向 mySQL 数据库添加数据?的主要内容,如果未能解决你的问题,请参考以下文章
关于wamp的HTML, PHP, mysql 三者的操作与联系 - HTML与PHP之间传值(上)
django 管理界面 change_form.html 向 querydict/post 添加数据?