2016-12-14 3 views
-4

저는 PHP와 MySQL의 초보자입니다. 다음은 데이터를 데이터베이스에 추가하는 간단한 코드입니다. 작동하지 않습니다 connection.php (mysql 연결 변수 설정) 파일은 이미 생성되었으며 다른 파일 및 함수와도 잘 작동합니다. 이 코드는 여기에 데이터베이스에 데이터를 추가하지 않는 동안 아무런 오류 메시지가 나타나지 않습니다 누군가가 문제가 될 수있는 곳을 말해 줄 수 있습니까? 에mysql 삽입이 작동하지 않습니다.

<?php 

if (isset($_POST['bookt']) & isset($_POST['type']) &   isset($_POST['publisher']) & isset($_POST['year']) & isset($_POST['class']) & isset($_POST['subject'])) { 

//set the values 
$bookt= $_POST['bookt']; 
$type= $_POST['type']; 
$publ=$_POST['publisher']; 
$year=$_POST['year']; 
$class= $_POST['class']; 
$subj= $_POST['subject']; 

    //INSERTING A ROW 
$add_query= "INSERT INTO books ('Book Title','Type','Publisher','Yearp', 'Class','Subject') 
VALUES ('$bookt','$type','$publ','&year','$class','$subj')"; 

//query 
$result=mysql_query($add_query); 
if (!$result) {die("couldn't perform query".mysql_error());} 
if ($result) {echo " </ br> <p><script type='text/javascript'>alert('INSERT   SUCCESSFUL!!!');</script></p><br /><br /> insert id was ".mysql_insert_id();} 
}; 

?> 
+2

'$ year'이지,'& year'가 아닙니다. 또한, [** SQL injection **] (https://www.owasp.org/index.php/SQL_Injection)에 대해 활발히 참여하고 있습니다. –

+1

[mysql_ 함수 사용을 중지하십시오] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) PHP에서 제거되었으므로 – Machavity

답변

1

이 코드에는 많은 문제가 있습니다.

먼저 don't use mysql_*을 입력하십시오. mysql_* 기능이 오래되어 deprecated이며 안전하지 않습니다. PHP 7에서 완전히 제거되었습니다. 대신 MySQLi 또는 PDO을 사용하십시오.

두 번째로, 부울 "and"연산자는 이 아니고 & (비트 연산자 "and"연산자)이 아닙니다.

셋째, $year이 아니라 &year입니다.

$add_query= "INSERT INTO books (`Book Title`,`Type`,`Publisher`,`Yearp`, `Class`,`Subject'`) 
VALUES ('$bookt','$type','$publ','$year','$class','$subj')"; 

작은 따옴표가 쿼리에 오류가 발생합니다 :

넷째, 아니 작은 따옴표 ('...'), 역 따옴표에 열 이름을 넣어. 이것이 검색어가 전혀 작동하지 않는 이유입니다.

다섯째, 오류 검사 또는 데이터 유효성 검사를 수행하지 않고 있습니다.

여섯째, 당신은 SQL injection으로 활짝 열려 있습니다. 준비된 문과 을 사용하지 마십시오. 사용자 입력을 SQL에 직접 입력하십시오.

더 많은 문제가있을 수 있지만 큰 문제입니다.

+0

감사합니다. 일을 시작했다. –

1

당신은 당신의 문이 경우 논리 연산자 "&"를 사용하는 여러 조건을합니다. 또한 mysql_은 오랫동안 PHP7에서 사라졌습니다.

관련 문제