はじめまして。
MySQL+PHP初心者なのですが、INSERT文中での変数展開がうまくいきません。

フォームから受け取ったデータを単純にレコードに追加するだけなのですが、

mysql_query('insert into area_tbl (area)values($area)');

areaのデータ型はテキストで、$areaをクォーテーションで囲めば当然のごとくそのまま表示されてしまいますし、事前に $area = $_POST['area'] の処理をしてもダメです。直後に echo "$area" をするとフォームに入力した文字列が表示されるので、データの受け渡しはうまくいっていると思います。また ($area) の代わりに'あいうえお'といれると【あいうえお】とデータベースに反映されるので、MySQLとPHPの日本語対応の問題もないと思います。なぜでしょうか?

ご指導のほどよろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

mysql_query('insert into area_tbl (area)values("'.$area.'")');


を試してみてください。
    • good
    • 0
この回答へのお礼

一発でうまくいきました。

MySQLやPHP関連のサイトを見て回ったのですが、なかなか答えにたどり着けずにいました。ありがとうございます。

お礼日時:2005/04/11 19:51

mysql_query("insert into area_tbl (area)values('$area')");


でもできる。
    • good
    • 0

'(シングルクォート)で括った場合は変数展開されません。


"(ダブルクォート)で括りましょう。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel VBAで、セルに入ってるデータ型を調べる方法は?

現在、Excel VBAでプログラムを作成しています。

Do Until ~ Loop の終了条件を
アクティブセルに入っているデータの型が文字列型の時
としたいのですが、そのようなことは可能なのでしょうか?

可能だとしたら、どのように記述したらいいのでしょうか?

当方のPCは
Win XP、Excel2003
です。

よろしくお願いいたします。

Aベストアンサー

VarType 関数を使うとか。

Sub SampleProc()

  Dim i As Long
  
  i = 1
  Do While Len(Cells(i, "A").Value) > 0
    If VarType(Cells(i, "A")) = vbString Then
      Exit Do
    Else
      ' // 処理
    End If
    i = i + 1
  Loop
  MsgBox CStr(i) & "行目で停止"

End Sub

Q何故、mysql_insert_id が not a valid になるのでしょうか?  

MySQLバージョン サーバ5.0.45、 クライアント 3.23.49
Apache2.0.61 (Win32) PHP4.4.7 の環境下で、
名称 member, id int(10) unsigned not null auto_increment、
name, varchar(20) not null, mail varchar(30) not null のテーブルを作りました。         

次のスクリプトを書いて
<?php
session_start();
$name = $_POST["name"];
$mail = $_POST["mail"];
print_r($_POST);
$conn = mysql_pconnect("localhost", "ABC", "XYZ") or die("Can't connect");
mysql_select_db("SIMEI", $conn) or die("db error") ;
$query = "INSERT INTO member (name, mail) VALUES ('$name','$mail')";
$result = mysql_query($query, $conn);
//$oid = 'mysql_insert_id($result)'; //''で括ってみる
$oid = mysql_insert_id($result); // ← 11行
$result = mysql_query( "SELECT id FROM member WHERE oid = $oid", $conn);
if($result){ print("insert OK");}  echo "Can't insert ";
$_SESSION['id'] = mysql_result($result, 0); // ← 14行
mysql_close($conn);
?>

これを実行すると、 データはmysql DB に登録されますが、下記のエラーが出て、id を取得できません。
何故でしょうか? どうすれば不具合を解決することができるでしょうか?
Warning: mysql_insert_id(): supplied argument is not a valid MySQL-Link resource in C:\・・・・\insert.php on line 11
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\・・・・・\insert.php on line 14

MySQLバージョン サーバ5.0.45、 クライアント 3.23.49
Apache2.0.61 (Win32) PHP4.4.7 の環境下で、
名称 member, id int(10) unsigned not null auto_increment、
name, varchar(20) not null, mail varchar(30) not null のテーブルを作りました。         

次のスクリプトを書いて
<?php
session_start();
$name = $_POST["name"];
$mail = $_POST["mail"];
print_r($_POST);
$conn = mysql_pconnect("localhost", "ABC", "XYZ") or die("Can't connect");
mysql_select_db("S...続きを読む

Aベストアンサー

$resultを渡すのが間違っているような。

参考URL:http://search.goo.ne.jp/web.jsp?MT=php+mysql_insert_id&STYPE=web&IE=UTF-8&from=gootop

QVBAでオブジェクト変数にsetしたシートがactiveかどうかを調べるには?

標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、
あるタイミングで、あるシートをそのオブジェクト変数にSetしています。

で、そのシートに値をセットするときに、そのシートがActiveだった場合だけやりたい処理があるのですが、Setしてあるオブジェクト変数だけを見てそのシートがActiveか否かを判断する方法って、あるのでしょうか。

コード例)
Private oSheetA as Worksheet

Sub SetSheet(sName as String)
  Set oSheetA = worksheets(sName)
End Sub

Sub SetValue(nValue as integer)
  xxxxxx ←ここでoSheetAがActiveならやりたいことがある。
  oSheetA.Cells(nRow, nCol) = cValue
End Sub

具体的には、複数のBookを開いている状態で、Activeシートが何であるかはオペレータの操作次第なので固定化できない状態で、SetValueが呼び出されたとき、oSheetAがActiveだったら、値をセットするセルが見えるようにセルをActivateかスクロールさせたいんです。

標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、
あるタイミングで、あるシートをそのオブジェクト変数にSetしています。

で、そのシートに値をセットするときに、そのシートがActiveだった場合だけやりたい処理があるのですが、Setしてあるオブジェクト変数だけを見てそのシートがActiveか否かを判断する方法って、あるのでしょうか。

コード例)
Private oSheetA as Worksheet

Sub SetSheet(sName as String)
  Set oSheetA = worksheets(sName)
End Sub

Sub SetValue(nVa...続きを読む

Aベストアンサー

Option Explicit

Private oSheetA As Worksheet

Sub SetSheet(sName As String)
Set oSheetA = Worksheets(sName)
End Sub

Sub SetValue(nValue As Integer)
If oSheetA Is ActiveSheet Then
MsgBox ("hoge")
End If
oSheetA.Cells(1, 1) = nValue
End Sub

Sub Main()
SetSheet ("Sheet1")
SetValue (5)
End Sub

'実行できるようにソースは変更していますが,
'こんな感じでIs演算子で同じオブジェクトか比較してみるってのはどうでしょう?

Qmysql の insert文のクォーテーションについて

インサート文を作るとき、
INSERT INTO shitumon
(
 title_question,
 komari_level
)VALUES(
 'mysql の insert文のクォーテーションについて',
 '2'
)
のように、int系のデータに''とクォーテーションつけても
問題ないのでしょうか?
int系のデータのクォーテーションは外しておくのが望ましいのでしょうか?

Aベストアンサー

つけてもつけなくても、MySQL側で判断して吸収してくれます。
回答としては「どちらでもいい」ですね。

ただユーザビリティとしては、ついてなければ「数字なんだ」と
判断できるのでその方が望ましいです。
逆にプログラムで一括処理をするのであれば、あえて例外処理を
発生させない方がソース的にはいいかもしれません。

QVoidポインタで受け取った変数の型を調べる方法

あるライブラリの関数を利用しようとしたのですが、その関数の引数にVoidポインタがあり、どういう型のデータを格納したのかわかりません。このポインタのアドレスに格納されたデータの型を調べる関数なり方法なりというのはあるのでしょうか。

Voidポインタというのは型を問わずに受け取れるというのは利点ですが、受け取ったものがあらかじめなんだかわからない場合はどうするのでしょうか。よろしくお願いします。

Aベストアンサー

★基本的に調べようがありません。
・『void』ポインタはアドレス情報のみを受け渡しますので、型のサイズまでは分かりません。
 逆に言えば、型のサイズが分からないから『汎用ポインタ』と呼べるのです。
・あるライブラリの関数とは何?→どんな関数か分かりませんので、これ以上はアドバイス無理!
 ただ、C言語の qsort などでは比較用の関数で『void』ポインタを受け取りますが、その関数内で
 渡されたデータの『型』を指定します。→ポインタの形でキャストします。
 この比較用の関数は自前で用意する関数ですので、ソートするデータの型が分かっています。
 でも、ソートするデータ型が複数ある場合は、比較用の関数を複数作って切り替えます。
・あと関数に型を表す引数があれば、それを見て判断できますが、そうでない場合は『void』ポインタで
 渡される前の『型』の調べることは不可能です。→言語仕様より。
・以上。参考に。→一応、あるライブラリの関数とは何?

Qmysql_close をすれば mysql_free_result は必要ありませんか?

mysql_close と mysql_free_result の使い方がよく分かりません。

mysql_close でデータベースとのコネクションを切断すれば、mysql_free_resultする必要がないように思うのですが・・・

クエリで使用したメモリの解放は必ずした方が良いのでしょうか?

また、mysql_close と mysql_free_result をすることによってMySQLサーバーへの負担は軽減されるのでしょうか?

Aベストアンサー

きちんとしたプログラムを心がけるなら
開いたら閉じる、いらなくなったらすてるというのが基本ですね。

>必ずした方が良いのでしょうか?

と聞かれたら「はい」というのが正解でしょうね。
ただ、実際問題みんなそうしているかというと、手間だから
省いている人も多いでしょう。だからといって、しなくていい
というわけではありません。

QVBAでテキストファイルの件数を調べる方法

Access2000のVBAで関数を使用して
ファイルのパス名、ファイル名を指定すれば、
テキストファイルの件数を検索し変数に返す
関数はありませんか?
   
通常テキストファイルを開き1件1件カウントを
取っていけば件数を知ることは可能ですが、
数千レコードのテキストファイルが複数個存在
する場合処理スピードが遅くなるため何か
最適な関数はありませんか?
よろしくお願い致します。

Aベストアンサー

こんにちは。maruru01です。

No.2の方のFileSystemObjectを利用する方法です。

行数 = CreateObject("Scripting.FileSystemObject").OpenTextFile(ファイルのフルパス, 8).Line

複数のファイルをカウントするなら、ファイルでループを回せばいいでしょう。

あと、FileSystemObjectの参考ページを紹介しておきます。

http://www.bcap.co.jp/hanafusa/VBHLP/FSOme.htm

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/jsobjFileSystem.asp

参考URL:http://www.bcap.co.jp/hanafusa/VBHLP/FSOme.htm,http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/l

こんにちは。maruru01です。

No.2の方のFileSystemObjectを利用する方法です。

行数 = CreateObject("Scripting.FileSystemObject").OpenTextFile(ファイルのフルパス, 8).Line

複数のファイルをカウントするなら、ファイルでループを回せばいいでしょう。

あと、FileSystemObjectの参考ページを紹介しておきます。

http://www.bcap.co.jp/hanafusa/VBHLP/FSOme.htm

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/jsobjFileSystem.asp

...続きを読む

QMYSQLのauto_increment値をINSERT時にコードとして利用したい

MySQLでデータ挿入時にid としてauto_increment値を設定するのですが、
同時にp_codeというカラムで3ケタのゼロフィルしたコード値を入れたいのですが、
可能でしょうか?

Aベストアンサー

idと同じ値をp_codeにいれる?
それってp_codeのカラムをつくる必要ないのでは?

また3桁のゼロフィルとは「001」~「999」までということ?
(まぁ桁あふれしたらかってに4桁になるんですけどね)

QVBAで他のプログラムが起動しているか調べる方法

VBAで
D:\test\test.exe
が起動中か調べたいのですが
どのようにすれば良いですか?

http://www.vbalab.net/vbaqa/data/access/log/tree_532.htm

このページの方法を使えば、
exe以外のファイルが使用中かは調べることができたのですが
exeファイルの場合にはうまくいきません。

良い方法があれば教えてください。

Aベストアンサー

残念ながら・・・出来ません。
一応、プロパティの中に Handle ってのがあるのですが
取得できるのは ProcessID の値です。
以前、調べていて Handle を見つけた時は、
『やったー \(^o^)/』と思いましたが
ぬか喜びでした。。。orz

なお、当方の環境は、Windows7 Pro & Office2010 です。

QMySQL3→MySQL5にしたのですが、INSERTの仕様変更?

バージョンを3から5にしたのですが、
フィールドがa、b、c、とあり
3のときは、
INSERT INTO test SET a='aaa' b='aaa'
とすれば、cには何も入らずにaとbのみ格納できたのですが、
5のときは
cに何も格納しないとエラーが出てしまいます。
なので、
INSERT INTO test SET a='aaa' b='aaa' c=''
のように回避するしかないのでしょうか?

Aベストアンサー

#1です。

MySQLは、Default未設定でも、自動割当が行われるようなので、そのエラーは出ない(場合が多い)はず。


このサイトに書いてある設定がなされていますか?
http://kawama.jp/archives/2005/12/mysql_error_136.html

>sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報