将新数据发布到数据库

时间:2013-05-20 12:36:59

标签: php mysql

我无法让这个工作,它不是将数据发布到数据库,我对这个全新,任何帮助都很棒!

<?php
    $connection = mysql_connect('server', 'user', 'pass') or die(mysql_error());
    mysql_select_db('db') or die(mysql_error());

    $client = $_POST['client'];
    $date = $_POST['date'];
    $amount = $_POST['amount'];

    $sql = "INSERT INTO $sales (client, date, amount) VALUES ('$client', '$date', '$amount')";

    $result = mysql_query($sql, $connection);

    if ($result) {
        echo "Successful";
        echo "<BR>";
        echo "<a href='insert.php'>Back to main page</a>";
    } else {
        echo "ERROR";
    }
?>

2 个答案:

答案 0 :(得分:1)

什么是$ sales看起来不应该是变量,假设它是一个表名,试试这个

$sql="INSERT INTO sales (client, date, amount) VALUES ('$client', '$date', '$amount')";

此外,日期是MYSQl中的一个保留字,虽然它可以在不使用反向操作符的情况下使用它,但最好像这样逃避它

 $sql="INSERT INTO sales (client, `date`, amount) VALUES ('$client', '$date', '$amount')";

答案 1 :(得分:1)

看起来您已将表名设置为变量,这很好,但您尚未对其进行定义。此外,我强烈建议您清理$_POST变量以防止SQL注入。

  

Please, don't use mysql_* functions in new code.   它们不再被维护,deprecation process已经开始了。看到   red box?   了解prepared statements,   并使用PDO或   MySQLi - 这个   article会   帮你决定哪个。

<?php

$mysqli = new mysqli('host', 'user', 'password', 'database');

$client = $_POST['client'];
$date   = $_POST['date'];
$amount = $_POST['amount'];

$sql = "INSERT INTO sales (client, `date`, amount) VALUES ('$client', '$date', '$amount')";
$result = $mysqli -> query($sql);
$num    = $mysqli -> affected_rows;

if($num == 1){
    echo 'Success';
}else{
    echo 'Error: '.$mysqli -> error;
}

此外,date是MySQL中的保留字,因此我建议使用后退操作符或更改列名。