2012-10-17 40 views
0

道歉,因为这是一个重复的问题,但由于某种原因,我无法对我收到的答案发表任何评论,并且问题尚未得到解答。提交表单时出现空查询错误

当我的形式提交(通过Ajax),我收到以下错误信息:

PHP的警告:mysqli_query() [function.mysqli查询]:在空查询/和home1/xenongro /public_html/testing/enrolment/thanks.php on line 32

我怀疑这与if/else语句有关,但不确定实际问题是什么。作为测试,我删除了if/else语句,并成功提交了表单中的一些值。不幸的是,当我提出条件时,它提出了上述错误。

任何人都可以帮忙吗?

<?php 

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

$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

添加'else'情况。如果你不这样做,'$ query'将会是空的(提高你的错误) – Florent

+0

看看你的代码的正确缩进,特别是使用if/else/else if的条件块可能会有所帮助。也许它也为自己清理了一些东西。此外:不要使用'else if'不需要的地方:'$ level!=“IOSH安全管理”不同于'$ level ==“IOSH安全管理'',对吗?因此,例如,这里一个'else'应该涵盖这个排他性或案例。 – matthias

+0

我发布了一个案例,'$ query'将变成空的。顺便说一句,为什么你检查这个条件,如果查询是相同的所有4个分支?如果您发布的代码等于单个,则:if($ funding ==“Self Funding”|| $ funding ==“Employer Funding”){/ * query here * /}' – bhovhannes

回答

0

与您使用否则,如果如果块执行其他内部查询并恢复在评论

$result = mysqli_query($dbc, $query) //Inside the else if block 
+0

最好检查一下' $ query'不是null,而不是将mysqli_query()放入其他每个else块中。 – Florent

+0

如果不满足条件,则不会进入该块,因此不占用太多的负载。 – Manoj

0

如果你是通过AJAX发布和使用jQuery,你应该先提交这样的,否则它不会采取任何岗位价值的AJAX网址

$.ajax ({ 
     type:'post', 
     url:"domainPath", 
     success: function(response) { 
      if(!response.trim()) { .... 
0

如果$funding不等于两个“自我融资”和“雇主资助”,$query将是空的。
否则$query不能为空。

0

尝试这种解决方案(在$ ErrorsRow可以玛吉所有形式的错误):

if(isset($_POST['submit_button'])){ 
    $Data = $_POST; 
    foreach ($Data as $key => $value) { 
     if(!empty($value)) { 
      $DataRow[$key] = htmlspecialchars(trim($value)); 
     } else { 
      $ErrorsRow[] = 'Empty field '. $key; 
     } 
    } 

    if($DataRow && !isset($ErrorsRow)){ 
     $firstname = $DataRow['fname']; 
     $lastname = $DataRow['lname']; 
     $worktel = $DataRow['worktel']; 
     $funding = $DataRow['funding']; 
     $level  = $DataRow['level']; 

    $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')"; 
     } 
     } 
    if(isset($query)) { 
     $result = mysqli_query($dbc, $query) or die ('error querying database'); 
     mysqli_close($dbc); 
    } 


    } else { 
     if(isset($ErrorsRow) && !empty(implode($ErrorsRow))){ 
      $Errors = implode(',', $ErrorsRow); 
      echo 'some error message'. $Errors; 
     } 

    } 
}