2014-07-22 1 views
1

pdate와 mdate 사이의 날짜를 계산하는 DATEDIFF를 만들려고합니다. ddate로 표시합니다. 오류가 발생했습니다. "오류 : SQL 구문에 오류가 있습니다. 사용자의 MySQL 서버 버전과 일치하는 설명서에서 올바른 구문을 사용하여 SELECT 문의처를 확인하십시오. DATEDIFF (2014-07-22,2014-07-22) 'at line 2'. 내 코드에서 정확히 무엇이 잘못 되었습니까?DATEDIFF에서 SQL 오류 수신

<?php $con=mysqli_connect("localhost","xxx","xxx","xxxx"); // Check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

// escape variables for security 
$pdate = mysqli_real_escape_string($con, $_POST['pdate']); 
$mdate = mysqli_real_escape_string($con, $_POST['mdate']); 
$amt = mysqli_real_escape_string($con, $_POST['amt']); 
$first = mysqli_real_escape_string($con, $_POST['first']); 
$last = mysqli_real_escape_string($con, $_POST['last']); 
$pid = mysqli_real_escape_string($con, $_POST['pid']); 
$cno = mysqli_real_escape_string($con, $_POST['cno']); 
$madd = mysqli_real_escape_string($con, $_POST['madd']); 
$bene = mysqli_real_escape_string($con, $_POST['bene']); 
$swc = mysqli_real_escape_string($con, $_POST['swc']); 
$bacc = mysqli_real_escape_string($con, $_POST['bacc']); 
$bank = mysqli_real_escape_string($con, $_POST['bank']); 
$badd = mysqli_real_escape_string($con, $_POST['badd']); 
$bno = mysqli_real_escape_string($con, $_POST['bno']); 

$sql="INSERT INTO contacts (pdate, mdate, amt, first, last, pid, cno,madd, bene, swc, bacc, bank, badd, bno, ddate) VALUES ('$pdate','$mdate','$amt','$first','$last','$pid','$cno','$madd','$bene','$swc','$bacc','$bank','$badd','$bno','$ddate')"; 

$sql.="SELECT contacts DATEDIFF($pdate,$mdate) AS ddate"; 

if (!mysqli_query($con,$sql)) 
{ 
die('Error: ' . mysqli_error($con)); 
} 

echo "Client record has been added to the database!"; 

mysqli_close($con); 
?> 
+0

'DATEDIFF' 문에서'contacts'는 무엇을하고 있습니까? 분명히 나에게 잘못 보입니다 –

+0

사과드립니다. 그러나 저는 MySQL을 처음 접했습니다. DATEDIFF를 사용하기 전에 SELECT에 테이블 이름을 입력해야한다고 생각했습니다. 제거한 후에도 여전히 같은 오류가 발생합니다. – Alex

+0

두 변수 사이에 차이가 있으므로 테이블과 독립적입니다. 또한 테이블에서 선택하는 경우에도 구문이 잘못되었습니다. –

답변

0

다음과 같은 일을해야하므로, 선택 쿼리에서 테이블 참조를 가질 필요는 $ pdate와 $ mdate 변수를 제공하지 않는 정의 및 날짜 값이됩니다 (

SELECT DATEDIFF를 $ pdate, $ mdate) AS ddate

또한이 쿼리를 이전 삽입과 결합하므로 삽입 끝 부분에 세미콜론이 필요합니다.

+0

고맙습니다! – Alex