- ベストアンサー
SQL insert文のシングル・ダブルクオーテーション
ASPで(DBと連結)登録画面を作っています。 登録フォームから「登録」ボタンを押したあとのDBへデータを入力(更新)する時のSQL文で手間取っています。 「パラメータが少なすぎます。1 を指定してください。 」とエラーが出ます。フィールド名は間違っていません。 cateid付近のシングル・ダブルクオーテーションの書き方がおかしいのかなとも思いますが長時間見てますがどこがおかしいか分かりません。 -------------- StrSQL = "insert into contents (" StrSQL = StrSQL & " title, " StrSQL = StrSQL & " naiyou, " StrSQL = StrSQL & " hiduke, " StrSQL = StrSQL & " cateid " StrSQL = StrSQL & ") values (" StrSQL = StrSQL & "'" & title & "'," StrSQL = StrSQL & "'" & naiyou & "'," StrSQL = StrSQL & "#" & hiduke & "#," StrSQL = StrSQL & " cateid " StrSQL = StrSQL & ")" -------------- cateidは入力フォームのセレクトボックスからの値で数値型です。 ご助言頂ければ助かります。 あとなぜinsert文、update、delete文のときはStrSQL = "・・・"と「""」で囲むのでしょうか。 長文すみません。宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 cateidが数値型でしたら、 StrSQL & cateid になるかなと思います。 (ASPあまりさわったことないので間違えてたらすいません) 実際に画面にStrSQLの内容を表示してみるとデバックしやすいですよ。 >あとなぜinsert文、update、delete文のときはStrSQL= "・・・"と「""」で囲むのでしょうか。 SQL「文」というだけあって、queryとして実行される SQLは単純な文字列の集合なので 囲む必要があります。
その他の回答 (3)
- Kuppycat
- ベストアンサー率50% (109/216)
#3です。 "cateid"という「文字」ではなく、"cateid"という「ファンクションの返り値」ですね。 SQL文として、cateid の中身の数値でなく、cateid という文字が書かれているので、cateid というストアドファンクションを探しに行っているものと思われます。
お礼
cateid というストアドファンクションを探しに行っている・・等大変参考になりました。 補足込みいただき、ありがとうございました。これでSQL文から開放されて次のステップに進めます。
- Kuppycat
- ベストアンサー率50% (109/216)
このSQL文ですと、cateid に、"cateid" という文字をいれようとします。 このばあい、#1の方が言っているとおり、 StrSQL = StrSQL & cateid と書くのが正解ですね。
- kenthy
- ベストアンサー率28% (2/7)
>StrSQL = StrSQL & " cateid " ですが、cateid というのが変数でしたら 間違ってますね StrSQL = StrSQL & cateid でよろしいのでは?
お礼
やはりcateid の部分でした。数時間のSQL文の悩みとイライラが解決できて良かったです。本当にありがとうございました。
お礼
早速StrSQL & cateidでしてみました。 動くようになりました! またStrSQLの内容を表示してデバックも試してみました。前のだと -------- insert into contents ( title, naiyou, hiduke, cateid ) values ('reponse','write',#2005/02/16#,cateid) -------- とcateidの部分の値が「1」等入らずおかしかったです。 SQL「文」というだけあって・・の部分も参考になりました。 大変感謝です。ありがとうございました。