我已经建立了我的第一个表单/PHP/mySQL组合,使用来自不同站点(包括这个站点)的信息,并在本地服务器上使用MAMP运行它。尽管网页总是成功地连接到目标数据库,但它并没有将我键入的数据输入到MySQL表中(我正在使用phpMyAdmin进行检查)。
你可能会看到一些被评论出来的东西,这是我以前试过但没用的东西。
窗体打开insert.php
<form action="insert.php" method="post">
Diet Name: <input type="text" name="name"><br/>
Your Rating: <select type="int" name="rating">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select><br/>
Type: BodyBuilding<input type="radio" name="type" value="BodyBuilding"> Weight Loss<input type="radio" name="type" value="Weight Loss"><br/>
Description: <input type="text" name="descr"><br/>
<input type="submit">
index.php
该网页将表单数据发送到<?php
define('DB_NAME', 'diet');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
if (!$db_selected) {
die('Could not use ' . DB_NAME . ': ' . mysql_error());
}
/*$sql="INSERT INTO diet (name, rating, type, descr)
VALUES('$_POST[name]','$_POST[rating]','$_POST[type],'$_POST[descr]')";*/
$sql = "INSERT INTO diet ('name', 'rating', 'type', 'descr') VALUES ('$name','$rating','$type','$descr', NOW())";
if (!$link)
{
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
?>
最佳答案
下面是一个PDO示例。我不知道Now()
代表什么(可能是插入日期),但我认为您可以想出如何添加它。
$dbhost = 'YOUR_SERVER';
$dbuser = 'YOUR_USERNAME';
$dbpass = 'YOUR_PASSWORD';
$dbname = 'YOUR_DATABASE_NAME';
try {
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}
catch(PDOException $e) {
echo $e->getMessage();
}
$name = $_POST[name];
$rating = $_POST[rating];
$type = $_POST[type];
$desc = $_POST[descr];
if ($conn)
{
$query = "INSERT INTO diet (name, rating, type, descr) VALUES(:name, :rating, :type, :desc)";
$insert = $conn->prepare($query);
$insert->bindValue(":name",$name);
$insert->bindValue(":rating",$rating);
$insert->bindValue(":type",$type);
$insert->bindValue(":desc",$desc);
$insert->execute();
}
/* Free connection resources. */
$conn = null;
文档:http://us2.php.net/pdo.prepared-statements
Why you Should be using PHP’s PDO for Database Access
关于php - PHP无法通过表单创建mySQL记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21370531/