2013-05-20 4 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

Вы должны дезинфицировать свои переменные сообщений, чтобы предотвратить инъекцию sql. –

+0

Это устарело: используйте mysqli_ * вместо mysql_ * – antoox

+0

mysql_select_db ('db') должен иметь $ connection defined: 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/ru/reserved-words.html). Из документа: _MySQL разрешает использование некоторых ключевых слов в качестве некотируемых идентификаторов, потому что многие ранее использовали их. Примерами являются те, в следующем списке: ДЕЙСТВИЯ 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 вместо и использовать 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, так что я предложил бы использовать обратные тикать операторы или, возможно, изменить имя столбца.

Смежные вопросы