无法使用php将数据插入mysql

时间:2013-03-21 01:37:42

标签: php mysql

我现在已经尝试了两天来解决这个问题。我从教程中逐字复制,但仍然无法将数据插入表中。这是我的代码

<font face="Verdana" size="2"> 
<form method="post" action="Manage_cust.php" >
Customer Name 
<font face="Verdana"> 
<input type="text" name="Company" size="50"></font>
<br>
Customer Type 
<font face="Verdana"> 
<select name="custType" size="1">
  <option>Non-Contract</option>
  <option>Contract</option>
</select></font>
<br>
Contract Hours 
<font face="Verdana"> 
<input type="text" name="contractHours" value="0"></font>
<br>
<font face="Verdana">
<input type="submit" name="dothis" value="Add Customer"></font>
</form>
</font> 
<font face="Verdana" size="2">

<?php
    if (isset($_POST['dothis'])) {

    $con = mysql_connect ("localhost","root","password");
    if (!$con){
    die ("Cannot Connect: " . mysql_error());
    }

    mysql_select_db("averyit_net",$con);

    $sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours)   VALUES 
    ('$_POST[Company]','$_POST[custType]','$_POST[contractHours]')";

    mysql_query($sql, $con);

    print_r($sql);


    mysql_close($con);
    }
?>

这是我的PHPmyadmin服务器信息:

服务器:127.0.0.1通过TCP / IP 软件:MySQL 软件版本:5.5.27 - MySQL社区服务器(GPL) 协议版本:10 用户:root @ localhost 服务器字符集:UTF-8 Unicode(utf8)

请告诉我为什么这不起作用。当我运行网站时,它会将信息输入并在我按下提交按钮时消失,但它不会进入表格。没有显示的错误消息。帮助

3 个答案:

答案 0 :(得分:0)

我在SQL语句中进行了一些改进,将其存储在一个数组中,这是为了确保你的帖子数据真的被设置,否则它会抛出一个空值。请始终清理您的输入。

在您的Manage_cust.php中:

<?php

if (isset($_POST['dothis'])) 
{

$con = mysql_connect ("localhost","root","password");
    if (!$con)
    {
        die ("Cannot Connect: " . mysql_error());
    }

mysql_select_db("averyit_net",$con);

$company = isset($_POST['Company'])?$_POST['Company']:NULL;
$custype = isset($_POST['custType'])?$_POST['custType']:NULL;
$hours   = isset($_POST['contractHours'])?$_POST['contractHours']:NULL;

$sql = "INSERT INTO cust_profile(Customer_Name, 
                                 Customer_Type, 
                                 Contract_Hours)   
        VALUES('$company',
               '$custype',
               '$hours')
       ";

       mysql_query($sql, $con);

       mysql_close($con);
}
?>

答案 1 :(得分:0)

首先,请勿使用font代码... ever

其次,因为这一行:

if (isset($_POST['dothis'])) {

看起来您的HTML和PHP合并为一个脚本?在这种情况下,您需要将表单上的操作更改为以下内容:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >

另外,你可以在一行中杀死一个错误的连接:

$con = mysql_connect("localhost","root","password") or die("I died, sorry." . mysql_error() );

使用isset()检查您的帖子,然后为变量分配值。

var $company;
if(isset($_POST['Company']) {
    $company = $_POST['Company'];
} else {
    $company = null;
}
//so on and so forth for the other fields

或使用ternary operators

此外,使用原始的mysql PHP API通常是一个糟糕的选择。它甚至在PHP manual for the API

中提到过

最好与mysqliPDO一起使用,让我们转换一下:

//your connection
$conn = mysqli_connect("localhost","username","password","averyit_net");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}


$sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours) 
        VALUES ($company,$custType,$contractHours)";
            //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            //  Assuming you set these

$stmt = mysqli_prepare($conn, $sql);
$stmt->execute();
$stmt->close();

有人告诉我这是不是错了,所以我可以纠正它。我暂时没有使用mysqli

答案 2 :(得分:0)

将$ sql更改为:

$sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours)   VALUES ('".$_POST[Company]."','".$_POST[custType]."','".$_POST[contractHours]."')