我正在使用一个简单的表单并将我的文本框值提交到数据库,
<body>
<?php
if(isset($_POST["submit"]))
$des="Insert into enquiry(Companyname,Name,Phno,Email,Address,Comments) values
('".$_POST[txtcompname]."','".$_POST[txtname]."','".$_POST[txtphno]."',
'".$_POST[txtemail]."','".$_POST[txtaddress]."','".$_POST[txtcomments]."')";
$res1=mysql_query($des);
?>
<div align="left">
<form action="" method="post">
但似乎没有提交?任何建议
当我使用print_r($_POST);
时,我得到了
Array ( [txtcompname] => xv [txtname] => xcv [txtphno] => xcvx [txtemail] => xcv [txtaddresss] => xcv [txtcomments] => xcvxcv [submit] => submit )
我现在收到此错误,
You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'Address,Comments)
values ('zdc','sadcv','zdsv', 'sdcv','sdvcsdv','sdcv')' at line 2
答案 0 :(得分:4)
这里有几个潜在的问题,但我需要看到你的整个脚本给你一个明确的答案。
你应该问的问题 - 是$ _POST ['submit']设置?在if中查找输出内容。例如,您的提交按钮值是“提交”而不是“提交”。
您还应该尝试查看mysql_error()以查看数据库是否拒绝您的查询。例如,您的字段名称是否正确?
最后,$ _POST [txtcompname]应该是$ _POST ['txtcompname'],而你的其他$ _POST变量也需要在表单字段名称周围引用。根据您的PHP版本和配置,您可能会使用它,但这是不好的做法。如果没有引号,PHP会将txtcompname解释为常量(由define()定义)。默认情况下,可以设置为字符串txtcompname,因此它可能有效,但您不应该依赖它。
此外,如果这是一个面向公众的网站,那么您正在设置SQL注入问题,因为您没有转义或以其他方式清理您的输入。如果您的输入中包含“字符”,则查询将会中断。
答案 1 :(得分:1)
我发现你的代码中有一些错误只是通过考虑它...确保你有所有警告,所以你可以看到它们
1)在提交表单后,将执行if后的括号,或者仅执行$ des变量的赋值
2)$ _POST是一个数组..你需要引号$ _POST ['txtcompname']
最后确保提交输入有name="submit"
,但我认为最好使用if !empty($_POST)
评估提交
答案 2 :(得分:1)
如果这样做,您就会发现enquiry
和(Companyname
之间缺少空格
function debug($var, $label = '') {
echo $label
. '<pre>'
. print_r($var, true)
. '</pre>';
}
if (array_key_exists('submit', $_POST)) {
debug($_POST, '_POST');
$_dbCompany = mysql_real_escape_string($_POST['txtcompname']);
$_dbName = mysql_real_escape_string($_POST['txtname']);
$_dbPhone = mysql_real_escape_string($_POST['txtphno']);
$_dbEmail = mysql_real_escape_string($_POST['txtemail']);
$_dbAdress = mysql_real_escape_string($_POST['txtaddress']);
$_dbComments = mysql_real_escape_string($_POST['txtcomments']);
$_prepareSQL = "INSERT INTO
enquiry (Companyname,Name,Phno,Email,Address,Comments)
VALUES ('%s', '%s', '%s', '%s', '%s', '%s')";
$statement = sprintf($_prepareSQL, $_dbCompany, $_dbName, $_dbPhone, $_dbEmail, $_dbAdress, $_dbComments);
debug($statement, 'SQL-Query');
$result = mysql_query($statement) || trigger_error(mysql_error(), E_USER_ERROR);
}
答案 3 :(得分:0)
$ _ POST [txtcompname]和所有其他变量应该被引用。尝试使用$ _POST ['txtcompname']。另外,执行var_dump($ _ POST)并检查是否有你正在提供的所有值。