PHPとSQLに関する質問です。

現在の状況ですが

クエリ
select * form TB where (BARCODE = $bar)

エラー文
Warning: mssql_query() [function.mssql-query]: message: 型 nvarchar から型 numeric への変換エラー。 (severity 16) in ファイルのパスon line 42
というエラーが出ちゃいました。
42行目はデータベースへの接続でクエリを実行してます。

データ型だろうと思いこうしてみました。
select * form TB where (BARCODE = (string)$bar)

エラー文
'2200001111111' の近くに無効な構文があります。 (severity 15) in ファイルのパス on line 42

ためしにwhere文を除いて実行してみたところ、問題なく出力されました。
where文を使い抽出するにはどのように変更すべきでしょうか。
原因を添えてお願いします。

データベース側のBARCODEフィールドはテキスト型です。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/04/07 14:49:24
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:namiheikun No.1

回答回数75ベストアンサー獲得回数6

ポイント100pt

BARCODEはTEXT型ということなので

select * form TB where (BARCODE = '$bar')

シングルクオートで囲みましょう

id:kia_44

シングルクオートで囲んだらテキストになるのはわかってたのですが

$barというテキストで送られるもんだと思ってました。

無事解決しました。ありがとうございます。

2011/04/07 14:46:33
id:asuka645 No.2

回答回数856ベストアンサー獲得回数97

ポイント100pt

SQL文を以下のようにしてみてください。


"select * form TB where BARCODE = '{$bar}';"
id:kia_44

波カッコが気になり調べてみました。

今回は入れても入れなくても問題ないようですが、ひとつ賢くなりました。

変数を明示するという意味であったようがいいようですね。

解答ありがとうございます。無事解決いたしました。

2011/04/07 14:48:37

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません