2013-05-20 58 views
0

我無法獲得此工作,它不會將數據發佈到數據庫,我對此完全陌生,任何幫助都很棒!向數據庫發佈新數據

<?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"; 
    } 
?> 
+1

你應該清理你的post變量來防止sql注入。 –

+0

已棄用:使用mysqli_ *而不是mysql_ * – antoox

+0

mysql_select_db('db')應該定義$ connection:mysql_select_db('db',$ connection)。但是..使用mysqli來代替 –

回答

1

什麼是$銷售看起來它不應該是可變的,假設它作爲表名,試試這個

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

此外,日期是在MySQL中的保留字,但它被接受使用它沒有反勾運營商,這將是很好的逃避它這樣

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

不,日期不是[MYSQL中的保留字](https://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)。從doc:_MySQL允許一些關鍵字被用作未加引號的標識符,因爲許多人以前使用它們。實例是在以下列表: ACTION BIT DATE_ – antoox

+0

@antoox你應該正確讀取我的回答「此外,日期是MySQL中的保留字,但它被接受對它使用,無反勾運營商」 –

+0

太棒了!非常感謝你!! – Aurelius

1

看起來你已經確立了自己的表名作爲變量,這是很好的,但是你有沒有定義它。另外,我強烈建議您清理$_POST變量以防止SQL注入。

Please, don't use mysql_* functions in new code. 他們不再保持和deprecation process已經開始就可以了。請參閱 的red box? 瞭解prepared statements代替, 和使用PDOMySQLi - 這 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中的保留字,所以我會建議使用反勾運營商或可能更改列名。