这是我的代码。
我希望包含的表单将数据发送到我创建的MySQL数据库中名为“contacts”的表。
表格中有四个字段;标题,姓名,电子邮件,查询。
这是我为了适合我的网站而复制和编辑的代码。我是.PHP的新手!
<?php
if(isset($_POST['add'])) {
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
if(! get_magic_quotes_gpc() ) {
$p_title = addslashes ($_POST['p_title']);
$p_name = addslashes ($_POST['p_name']);
$p_email = addslashes ($_POST['p_email']);
}else {
$p_name = $_POST['p_name'];
$p_email = $_POST['p_email'];
}
$p_enquiry = $_POST['p_enquiry'];
$sql = "INSERT INTO contacts ". "(p_name,p_email, p_enquiry, p_title
join_date) ". "VALUES('$p_name','$p_email',$p_enquiry,$p_title NOW())";
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
mysql_close($conn);
}else {
?>
<form method = "post" action = "<?php $_PHP_SELF ?>">
<table width = "400" border = "0" cellspacing = "1"
cellpadding = "2">
<tr>
<td width = "100"><p>Title:</p></td>
<td><input name = "p_title" type = "text"
id = "p_title"></td>
</tr>
<tr>
<td width = "100"><p>Name:</p></td>
<td><input name = "p_name" type = "text"
id = "p_name"></td>
</tr>
<tr>
<td width = "100"><p>Email:</p></td>
<td><input name = "p_email" type = "text"
id = "p_email"></td>
</tr>
<tr>
<td width = "100"><p>Enquiry:</p></td>
<td><input name = "p_enquiry" type = "text"
id = "p_enquiry"></td>
</tr>
<tr>
<td width = "100"> </td>
<td> </td>
</tr>
<tr>
<td width = "100"> </td>
<td>
<input name = "add" type = "submit" id = "add"
value = "Add Employee">
</td>
</tr>
</table>
</form>
<?php
}
?>
答案 0 :(得分:0)
** 4列/字段的编辑 **
如果OP只需要4列(标题,名称,电子邮件,查询,又名.p_title,p_name,p_email,p_enquiry),则由于删除了join_date
及其对应的值{{1来自查询:
NOW()
**的 ORIGINAL 强> **
在不知道您收到的完全错误的情况下,我确实发现您的查询格式不正确:
$sql = "INSERT INTO contacts (p_name, p_email, p_enquiry, p_title) VALUES ('$p_name', '$p_email', '$p_enquiry', '$p_title')";
您遗漏(并要求)$sql = "INSERT INTO contacts ". "(p_name,p_email, p_enquiry, p_title
join_date) ". "VALUES('$p_name','$p_email',$p_enquiry,$p_title NOW())";
和$p_title
之间的逗号,以及它们的列标识符,如下所示:
NOW()
我还删除了连接,因为它不是必需的。我很好奇$sql = "INSERT INTO contacts (p_name, p_email, p_enquiry, p_title,
join_date) VALUES('$p_name', '$p_email', $p_enquiry, $p_title, NOW())";
和$p_enquiry
是字符串(听起来可能是这样),所以我很想将这些值包装在单引号中,就像这样(但仅限于适用):
$p_title
这个版本在语法方面没有问题。它们的值是字符串吗?或者它们是否按照列定义以数字为基础?
答案 1 :(得分:0)
首先,正如其他人所说,使用PDO,它非常重要,让生活更轻松。我认为你遇到的问题与p_title有关,p_title在执行insert语句时可能设置也可能不设置。此外,它似乎通常是一个字符串,但它没有用引号括起来。这将导致SQL语句出现问题。