我正在尝试将表单数据插入到我的表'supplier_registration'中,但这不起作用,我收到mysql'ERROR',我不知道为什么会发生这种情况。
我也想将相同的表单数据插入到第二个表'supplier_session'中,但这次只插入表单数据的特定位,'$ cname'和'$ creg'。
当用户登陆页面时,ip地址被插入到'supplier_session'表中,因此当提交此表单时,我还希望supplier_session表将枚举值'form1_complete'从no更新为yes,其中该用户的ip或'user_IP'存在于表格行中。我试图通过运行三个查询但它不起作用,请有人告诉我我哪里出错了。感谢
数据库:
ID(AI) | company_name | company_reg_number | company_incorp_date | company_address | company_postcode | contact_name | contact_number | contact_email | company_vat_number | date_time | user_IP
代码:
<?php
session_start();
$db_hostname = 'localhost';
$db_database = 'hewden1';
$db_username = 'root';
$db_password = '';
$db_server = mysql_connect($db_hostname, $db_username, $db_password)
or die("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());
$cname = $_POST['cname'];
$creg = $_POST['creg'];
$address = $_POST['address'];
$post = $_POST['post'];
$contactn = $_POST['contactn'];
$contactt = $_POST['contactt'];
$contacte = $_POST['contacte'];
$vat = $_POST['vat'];
$incorp = $_POST['incorp'];
$ipaddress = $_SERVER["REMOTE_ADDR"];
$sql="INSERT INTO supplier_registration (company_name, company_reg_number, company_incorp_date, company_address, company_postcode, contact_name, contact_number, contact_email, company_vat_number, date_time, user_ip)
VALUES ('$cname', '$creg', '$incorp', $address', '$post', '$contactn', '$contactt', '$contacte', '$vat', NOW(), '$ipaddress')";
$result = mysql_query($sql);
$qry2 = "INSERT INTO supplier_session (company_reg_number, company_name) VALUES('$creg','$cname') WHERE user_IP = '$ipaddress'";
$result = @mysql_query($qry2);
$qry3="UPDATE supplier_session SET form1_completed = 'Yes' WHERE form1_completed = 'No' AND user_IP = '$ipaddress'";
$result = mysql_query($q);
if($result){
header("Location: index.php?registration=sucess");
}else {
echo "ERROR";
}
?>
html:
<form name="myForm" id="myform" action="company_info_process.php" onsubmit="return validateForm()" method="post">
<input type="text" id="field_cname" name="cname" class="field_cname">
<input type='text' name='creg' id="field_creg">
<input type='text' name='incorp' id="field_incorp">
<input type='text' name='vat' id="field_vat">
<input type='text' name='contactn' id="field_contactn">
<input type="text" name="contactt" id="field_contactt">
<input type="text" id="field_contacte" name="contacte">
<input type="text" id="field_address" name="address">
<input type="text" id="field_post" name="post"/>
答案 0 :(得分:1)
首先,你在第三个查询中调用了错误的变量。
将$result = mysql_query($q);
更改为$result = mysql_query($qry3);
此外,使用INSERT()
语法,您不能拥有WHERE()
子句。您使用INSERT
语句时,唯一一次找到WHERE
子句INSERT INTO...SELECT
。
除此之外, WHERE
子句主要用于执行SELECT()
或UPDATE()
。
快速旁注:我注意到您没有结束</form>
标记。如果这是您的实际代码,请添加它。
在页面顶部使用错误报告:
error_reporting(E_ALL);
ini_set('display_errors', 1);
另外,请使用:
else{
echo mysql_errno($db_server) . ": " . mysql_error($db_server) . "\n";
}
而不是:
else {
echo "ERROR";
}
访问PHP.net以获取有关错误报告的更多信息。
<强>脚注:强>
mysql_*
函数弃用通知:
http://www.php.net/manual/en/intro.mysql.php
从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqli或PDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。
这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/。
可以在»http://dev.mysql.com/doc/找到MySQL的文档。
答案 1 :(得分:-1)
在您对mysql_query
开始调用的地方,输出它生成的所有错误消息:
$result = mysql_query($sql) or die(mysql_error());
应该指出哪个查询导致错误以及原因。
修改:另外,注意到WHERE
声明中有INSERT
条款,您无法做到。