1

Windows 7 Ultimate で PHP 5.3.24 (XAMPP パッケージ) と Microsoft SQL Server Express 2012 を実行しています。

多肢選択式テスト用の問題バンクを作成するためのフォームを作成しました。質問を送信しようとすると、次のエラーが表示されます。

配列 ( [0] => 配列 ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -14 [コード] => -14 [2] => 無効なパラメーターが sqlsrv_query に渡されました。 [メッセージ] => 無効なパラメーターが sqlsrv_query に渡されました。) )

フォームからの投稿データを処理する PHP ファイルで使用するコードは次のとおりです。

<?PHP
//section 1: define variables from post and clean up for posting.
$Question = $_POST['Question'];
$Question = trim(stripslashes(str_replace("'", "''", $Question)));
$Answer1 = $_POST['Answer1'];
$Answer1 = trim(stripslashes(str_replace("'", "''", $Answer1)));
$Answer2 = $_POST['Answer2'];
$Answer2 = trim(stripslashes(str_replace("'", "''", $Answer2)));
$Answer3 = $_POST['Answer3'];
$Answer3 = trim(stripslashes(str_replace("'", "''", $Answer3)));
$Answer4 = $_POST['Answer4'];
$Answer4 = trim(stripslashes(str_replace("'", "''", $Answer4)));
$Answer5 = $_POST['Answer5'];
$Answer5 = trim(stripslashes(str_replace("'", "''", $Answer5)));
$Answer6 = $_POST['Answer6'];
$Answer6 = trim(stripslashes(str_replace("'", "''", $Answer6)));
$Answer7 = $_POST['Answer7'];
$Answer7 = trim(stripslashes(str_replace("'", "''", $Answer7)));
$Answer8 = $_POST['Answer8'];
$Answer8 = trim(stripslashes(str_replace("'", "''", $Answer8)));
$Answer9 = $_POST['Answer9'];
$Answer9 = trim(stripslashes(str_replace("'", "''", $Answer9)));
$Answer10 = $_POST['Answer10'];
$Answer10 = trim(stripslashes(str_replace("'", "''", $Answer10)));
$QuestionNotes = $_POST['QuestionNotes'];
$QuestionNotes = trim(stripslashes(str_replace("'", "''", $QuestionNotes)));
$CorrectAnsw = $_POST['CorrectAnsw'];
$ProgramArea = $_POST['ProgramArea'];
$Difficulty = $_POST['Difficulty'];

//section 2: define sql statement
$sql=   ("INSERT INTO TESTDB.dbo.tblTestQuestions 
                (Question,Answer1,Answer2,Answer3,Answer4,Answer5, 
                 Answer6,Answer7,Answer8,Answer9,Answer10,CorrectAnsw,
                 ProgramArea,Difficulty,QuestionNotes,Inactive) 

        VALUES
                    (   '" . $Question . "','" . $Answer1 . "','" . $Answer2 . "','" . $Answer3 . "','" . $Answer4 . "',
                        '" . $Answer5 . "','" . $Answer6 . "','" . $Answer7 . "','" . $Answer8 . "','" . $Answer9 . "',
                        '" . $Answer10 . "'," . $CorrectAnsw . "," . $ProgramArea . "," . $Difficulty . ",
                        '" . $QuestionNotes . "',0)"); 

//section 3: call db connnection and post to database
include('C:/webincludes/dbconnect.php');    //this include defines $conn and has been tested to work
                                            //fine and I use it on dozens of other forms that work fine.

if (!SQLSRV_query($conn,$sql))
  {die( print_r( sqlsrv_errors(), true));} echo "Record Added";

SQLSRV_close($conn);


//section 4:    I added the following to display the variables to see what is being passed to the sql server.
//              To use it, I comment out section 3 and try to submit again.
echo "
        <html><body><br><font face='calibri' size='5'><b>Output as follows: </font></b><br>
        Question:&nbsp;&nbsp;&nbsp;&nbsp;" . $Question . "<br>
        Ans1:&nbsp;&nbsp;&nbsp;&nbsp;   " . $Answer1 . "<br>
        Ans2:&nbsp;&nbsp;&nbsp;&nbsp;   " . $Answer2 . "<br>
        Ans3:&nbsp;&nbsp;&nbsp;&nbsp;   " . $Answer3 . "<br>
        Ans4:&nbsp;&nbsp;&nbsp;&nbsp;   " . $Answer4 . "<br>
        Ans5:&nbsp;&nbsp;&nbsp;&nbsp;   " . $Answer5 . "<br>
        Ans6:&nbsp;&nbsp;&nbsp;&nbsp;   " . $Answer6 . "<br>
        Ans7:&nbsp;&nbsp;&nbsp;&nbsp;   " . $Answer7 . "<br>
        Ans8:&nbsp;&nbsp;&nbsp;&nbsp;   " . $Answer8 . "<br>
        Ans9:&nbsp;&nbsp;&nbsp;&nbsp;   " . $Answer9 . "<br>
        Ans10:&nbsp;&nbsp;&nbsp;    " . $Answer10 . "<br>
        Correct Answ:&nbsp;&nbsp;&nbsp;&nbsp;   " . $CorrectAnsw . "<br>
        Area:   " . $ProgramArea . "<br>
        Level:  " . $Difficulty . "<br>
        Notes:  " . $QuestionNotes . "<br>
        <b>SQL Statement:</b><br>
        " . $sql . "<br>
        " . $stmt . "<br>
        </font></body></html>
        ";

exit;
?>

データを送信すると、上記のエラーが発生します。実際に SQL スクリプトを実行するセクション 3 をコメントアウトし、データを投稿して表示すると、次のようになります。


次のように出力します: 質問:荷物を積んでいない ツバメの対気速度は
? アフリカかヨーロッパか?
Ans3: 青、いいえ、yelloooooooooooooow
Ans4: 植え込み!
Ans5: ニ!
Ans6: 大いなる危険!
Ans7: Robins minsterals
Ans8: あなたの母親はハムスターで、あなたの父親はエルダーベリーのにおいがしました。
Ans9: 唯一のモデル
Ans10: あなたへのメッセージです。
正解: : 2
エリア: 10
レベル: 3
備考: 私たちは言う騎士です. に!
SQL ステートメント:
INSERT INTO CAR.dbo.tblTestQuestions (Question,Answer1,Answer2,Answer3,Answer4,Answer5, Answer6,Answer7,Answer8,Answer9,Answer10,CorrectAnsw,ProgramArea,Difficulty,QuestionNotes,Inactive) VALUES ( '対気速度は?荷物を積んでいないツバメ','43 bpm','どういう意味ですか? アフリカですか、それともヨーロッパですか?','青、黄色はありません','植え込みです!','Ni!','Great Peril!','Robins minsterals', 「あなたのお母さんはハムスターで、あなたのお父さんはエルダーベリーのにおいがしました。」、「それはただのモデルです」、「あなたへのメッセージです、先生!」、2,10,3、「私たちは言う騎士です... Ni!」 ,0)

その sql ステートメントを取得して管理コンソールで実行すると、データが正常に挿入されます。しかし、Web ページから実行しようとすると、エラーが発生します。

私は当惑しています。初心者を許してください、しかしどこが間違っているのですか?

4

0 に答える 0