道歉,因为这是一个重复的问题,但由于某种原因,我无法对我收到的答案发表任何评论,并且问题尚未得到解答。提交表单时出现空查询错误
当我的形式提交(通过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);
?>
添加'else'情况。如果你不这样做,'$ query'将会是空的(提高你的错误) – Florent
看看你的代码的正确缩进,特别是使用if/else/else if的条件块可能会有所帮助。也许它也为自己清理了一些东西。此外:不要使用'else if'不需要的地方:'$ level!=“IOSH安全管理”不同于'$ level ==“IOSH安全管理'',对吗?因此,例如,这里一个'else'应该涵盖这个排他性或案例。 – matthias
我发布了一个案例,'$ query'将变成空的。顺便说一句,为什么你检查这个条件,如果查询是相同的所有4个分支?如果您发布的代码等于单个,则:if($ funding ==“Self Funding”|| $ funding ==“Employer Funding”){/ * query here * /}' – bhovhannes