dポイントプレゼントキャンペーン実施中!

趣味でサーバー構築を楽しんでいます
phpからqueryでデータを渡そうとしたところ詰まってしまい、どうにも分からないので質問します

//MSSQLQuery//
DECLARE @acct varchar(32);
SET @acct = 'testname';

INSERT INTO test.dbo.tblInfoA (Number,ID,)
SELECT Number,@acct FROM test.dbo.tblinfoB WHERE userId = @acct

このクエリをphpフォームからDBに送りたく下記をphpに記述しました

*/php
mssql_query("INSERT INTO test.dbo.tblInfoA (Number,ID) VALUES ('SELECT Number FROM test.dbo.tblinfoB WHERE userId = $login','$login');")

エラーメッセージ
message: Conversion failed when converting the varchar value 'SELECT Number FROM test.dbo.tblinfoB WHERE userId = name' to data type int. (severity 16)

お分かりの方いましたらご返答よろしくお願いします。

A 回答 (2件)

Number列に「SELECT Number FROM test.dbo.tblinfoB WHERE userId = name'」という「文字列」をセットしようとしてエラーになっていますNumber列はintですし、こんな「クエリそのもの」をセットtblInfoAにセットしたいわけではないですよね。



そもそもなぜ同じように書かなかったのでしょうか?
(実行したいクエリの方にはVALUES句はないですよね)
普通に考えたら、以下のようになると思いますが。

mssql_query("INSERT INTO test.dbo.tblInfoA (Number,ID) SELECT Number,userId FROM test.dbo.tblinfoB WHERE userId='$login';")
    • good
    • 0

> test.dbo.tblInfoA (Number,ID,)


IDの後ろのカンマは何?

tblInfoAの列IDをIntegerで宣言してませんか?
テーブル定義について、見直しが必要かも。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す