将表单数据插入一个表,然后将特定表单数据插入表2并更新枚举值?

时间:2014-04-30 16:01:57

标签: php html mysql

我正在尝试将表单数据插入到我的表'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"/>

2 个答案:

答案 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开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqliPDO_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条款,您无法做到。