0

作成中の「投票の追加」モジュール フォームのテキスト ボックスに入力しています。追加する投票の回答の選択肢は、はい、いいえ、多分です。

No と Maybe はキャッチされますが、Yes が省略されているのはどれが最初の答えですか?

多くのトラブルシューティングを行った結果、これが問題の行であると思います。

for ($i=1; $i <= $number; $i++ )

送信後 (エラー ログから):

INSERT INTO db_fpollitems VALUES ステートメントのデータベース エラー (NULL、66、いいえ、1、0)。エラー: 「フィールド リスト」の不明な列「いいえ」

INSERT INTO db_fpollitems VALUES (NULL, 66, Maybe, 2, 0) ステートメントでデータベース エラーが発生しました。エラー: 「フィールド リスト」の不明な列「多分」

INSERT INTO db_fpollitems VALUES (NULL, 66, , 3, 0) ステートメントのデータベース エラー。エラー: SQL 構文にエラーがあります。1 行目の '3, 0)' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

交換したら

"NULL, {$poll['id']}, {$polloptions[$i]}, $i, 0");

"NULL, {$poll['id']}, $i, $i, 0");

それは 1.2.3 の明らかな世論調査の回答で戻ってきます。

トラブルシューティングするコードは次のとおりです。

if ($_POST['submit'] == "Submit" && $word_ok)
{
    $subject = safesql($_POST['subject'], "text");
    $post = safesql($_POST['article'], "text", false);
    $number = $_POST['numoptions'];
            
    $pollquest = safesql($_POST['question'], "text");
    $polloptions = $_POST['option'];
            
    $username = safesql($check['id'], "text");
    
    $sql = $data->insert_query("ftopics", "NULL, $subject, 0 , $username, $timestamp, $username, $timestamp, $type, $fid, 0");
    if ($sql)
    {
        $sql = $data->select_query("ftopics", "WHERE subject=$subject AND numviews=0");
        $topic = $data->fetch_array($sql);
        
        $sql = $data->insert_query("fposts", "NULL, $subject, $post, $username, $timestamp, {$topic['id']}, 0, 0");
        if ($sql)
        {
            $data->update_query("users", "numposts = numposts + 1, numtopics = numtopics + 1", "id='{$check['id']}'");
            
            if ($pollquest != "" && $number > 1)
            {
                $sql = $data->insert_query("fpolls", "NULL, {$topic['id']}, $pollquest");
                if ($sql)
                {
                    $sql = $data->select_query("fpolls", "WHERE topic_id = {$topic['id']} AND question = $pollquest", "id");
                    $poll = $data->fetch_array($sql);
                    for ($i=1; $i <= $number; $i++ )
                    {
                        $data->insert_query("fpollitems", "NULL, {$poll['id']}, {$polloptions[$i]}, $i, 0");
                    }
                }
            }
               
4

1 に答える 1

0

引用符なしでリテラルを挿入しています。これを試してください:

"NULL, {$poll['id']}, '{$polloptions[$i]}', $i, 0");

あなたのコードは次のようになります:

if ($_POST['submit'] == "Submit" && $word_ok)
{
    $subject = safesql($_POST['subject'], "text");
    $post = safesql($_POST['article'], "text", false);
    $number = $_POST['numoptions'];

    $pollquest = safesql($_POST['question'], "text");
    $polloptions = $_POST['option'];

    $username = safesql($check['id'], "text");

    $sql = $data->insert_query("ftopics", "NULL, '$subject', 0 , '$username', $timestamp, '$username', $timestamp, '$type', $fid, 0");
    if ($sql)
    {
        $sql = $data->select_query("ftopics", "WHERE subject='$subject' AND numviews=0");
        $topic = $data->fetch_array($sql);

        $sql = $data->insert_query("fposts", "NULL, '$subject', '$post', '$username', $timestamp, {$topic['id']}, 0, 0");
        if ($sql)
        {
            $data->update_query("users", "numposts = numposts + 1, numtopics = numtopics + 1", "id='{$check['id']}'");

            if ($pollquest != "" && $number > 1)
            {
                $sql = $data->insert_query("fpolls", "NULL, {$topic['id']}, '$pollquest'");
                if ($sql)
                {
                    $sql = $data->select_query("fpolls", "WHERE topic_id = {$topic['id']} AND question = '$pollquest'", "id");
                    $poll = $data->fetch_array($sql);
                    for ($i=1; $i <= $number; $i++ )
                    {
                        $data->insert_query("fpollitems", "NULL, {$poll['id']}, '{$polloptions[$i]}', $i, 0");
                    }
                }
            }
于 2013-10-01T11:28:03.360 に答える