2012-10-17 7 views
1
내 양식 (아약스를 통해) 제출

을 통해 제출하면 빈 쿼리 PHP 오류를 얻기, 나는 다음과 같은 오류 메시지가 받고 있어요 : 나는 그것을 함께 할 수있는 뭔가 있다는 의심이양식 아약스

[17-Oct-2012 11:46:29] PHP Warning: mysqli_query() [<a href='function.mysqli-query'>function.mysqli-query</a>]: Empty query in /home1/xenongro/public_html/testing/enrolment/thanks.php on line 32 

을 if/else 문은 실제 문제가 무엇인지 확실하지 않습니다.

아무도 도와 줄 수 있습니까?

<?php 

$firstname = htmlspecialchars(trim($_POST['fname'])); 
$lastname = htmlspecialchars(trim($_POST['lname'])); 
$worktel = htmlspecialchars(trim($_POST['worktel'])); 

$dbc = mysqli_connect('localhost', 'xxxxx', '<xxxx>', 'xxxx') 
or die ('Could not connect to MySQL server.'); 

if ($level != "IOSH Managing Safely"){ 
if ($funding == "Self Funding"){ 
    $query = "INSERT INTO enrolments (fname, lname, worktel)" . 
"VALUES ('$firstname', '$lastname', '$worktel')"; 
} 
else if ($funding == "Employer Funding"){ 
$query = "INSERT INTO enrolments (fname, lname, worktel)" . 
"VALUES ('$firstname', '$lastname', '$worktel')"; 
} 
} 
else if ($level == "IOSH Managing Safely"){ 
if ($funding == "Self Funding"){ 
$query = "INSERT INTO enrolments (fname, lname, worktel)" . 
"VALUES ('$firstname', '$lastname', '$worktel')"; 
} 

else if ($funding == "Employer Funding"){ 
$query = "INSERT INTO enrolments (fname, lname, worktel)" . 
"VALUES ('$firstname', '$lastname', '$worktel')"; 
    } 
    } 

$result = mysqli_query($dbc, $query) 
or die ('error querying database'); 
mysqli_close($dbc); 

?> 
+0

은 프로그램이 조건 블록에 들어 가지 않음을 의미합니다 !! – Deepak

+1

$ level과 $ funding은 어디에 정의되어 있습니까? –

+0

'$ _POST'가 설정되어 있습니까? 귀하의 AJAX 요청 실제로'POST' 메서드를 사용합니까? $ funding과 $ level은 (?) 어디서 왔는가? 샘플 코드에는 아무 것도 정의되어 있지 않습니다. (항상 관련 스 니펫을 모두 보여 주어야합니다.) 그리고 적절한 데이터베이스 이스 케이 핑을 사용하지 않는 이유는 무엇입니까? – mario

답변

0

$result = mysqli_query($dbc, $query); 

는 내가 $funding 당신의 상수 문자열로 약간의 변화가있을 것으로 생각

당신에게 더 많은 정보를주지 직전

var_dump($query); 
var_dump($funding); 

시도

,

은 오타/추가 공백/뚜껑 경우 일 수 있습니다.

0

쿼리가 설정되지 않는 두 가지 상황이 있습니다. 수준이 문자열과 일치하지 않거나 자금이 문자열과 일치하지 않습니다. 공백에 문제가있을 수 있습니다.

더 나쁜 것은 mysql_real_escape_string을 사용하지 않고 magic_quotes_gpc가 켜져 있지 않으면 공격자가 SQL을 삽입 할 수 있다는 것입니다.

0

$funding은 제공된 코드 예제에서 정의되지 않은 것으로 나타나므로 어떤 if도 일치하지 않습니다.