2012-10-17 25 views
1

當我的形式提交(通過Ajax)提交,我得到了以下錯誤消息:漸漸空虛查詢PHP錯誤時表單通過Ajax

[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'方法? $資金和$等級來自哪裏(?),它們在您的示例代碼中無處定義(請始終打擾顯示所有相關片段)。爲什麼你不使用正確的數據庫轉義? – mario

回答

0

嘗試

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

之前

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

它會給你更多的信息

我懷疑$funding可能有微小的變化,以您的常量字符串

可能是錯字/額外空間/上限案例

0

存在兩種情況,未設置查詢: 級別與字符串不匹配,或者資金與字符串不匹配。 這可能是空間問題。

更糟糕的是,您不使用mysql_real_escape_string,除非啓用magic_quotes_gpc,否則這將允許攻擊者注入他的SQL。

0

$funding似乎沒有在提供的代碼示例中定義,因此您的if都不匹配。