0

これは重複した質問であることをお詫びしますが、何らかの理由で、受け取った回答についてコメントすることができず、質問に対する回答がありません。

フォームが (Ajax 経由で) 送信されると、次のエラー メッセージが表示されます。

PHP 警告: mysqli_query() [function.mysqli-query]: 32 行目の /home1/xenongro/public_html/testing/enrolment/thanks.php の空のクエリ

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);

?>
4

4 に答える 4

0

else if を使用しているように、else if ブロック内でクエリを実行し、コメントで元に戻します

$result = mysqli_query($dbc, $query) //Inside the else if block
于 2012-10-17T11:38:38.327 に答える
0

ajax 経由で jquery を使用して投稿する場合は、最初にこのように送信する必要があります。そうしないと、ajax URL への投稿値が取得されません。

$.ajax ({
        type:'post',
        url:"domainPath",
        success: function(response) {
            if(!response.trim()) { ....
于 2012-10-17T11:40:57.987 に答える
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; 
        }

    } 
}
于 2012-10-17T11:51:33.637 に答える
0

$funding「自己資金」と「雇用者資金」の両方に等しくない場合は、$query空になります。
それ以外の場合$queryは空にできません。

于 2012-10-17T11:45:51.030 に答える