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

mysql_ * – antoox

+0

대신 mysqli_ *를 사용하십시오 mysql_select_db ('db')에 $ connection이 정의되어 있어야합니다 : mysql_select_db ('db', $ connection). 하지만 .. 대신 mysqli를 사용하십시오 –

답변

1

가 TABLENAME로 가정 보인다, 또한이

$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 제대로 내 대답을 읽어야 @antoox DATE_ – antoox

+0

"가 다시 틱 연산자없이 사용 가능하고 있지만 또한, 날짜 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은 예약어입니다.

관련 문제