人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpのfunctionについて質問です。

現在MDB2を利用して、下記のようにinsertする場面がいくつかでてきたため関数にしておこうと考えています。
$row = array(
'id' => '$id',
'name' => '$name',
'profile_image_mobile' => '$profile_image_mobile',
'gender' => '$gender',
'created' => '$date',
'updated' => '$date',
);

function insertMember($row){
$sql = "insert into member(
member_id,
name,
profile_image_mobile,
gender,
created,
updated
) VALUES(?,?,?,?,?,?)";

$sth = $mdb2->prepare($sql);
$data = array(
$member_id,
$name,
$profile_image_mobile,
$gender,
$date,
$date
);

$result = $sth->execute($data);

}
このままだとうまく関数が働いてくれないのですが、、、よくわかっておらずうまい書き方があれば教えていただけないでしょうか。

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

●質問者: aiueo
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●50ポイント

連想配列にする必要が わからないのですが・・・。


$row = array(

'id' => '$id',

'name' => '$name',

'profile_image_mobile' => '$profile_image_mobile',

'gender' => '$gender',

'created' => '$date',

'updated' => '$date',

);

は 単純に

$row = array(

$id,

$name,

$profile_image_mobile,

$gender,

$date,

$date,

);

とやったら ダメなのかな?

◎質問者からの返答

コメントありがとうございます。両方で試してみてダメだったのです。


2 ● tdoi
●50ポイント ベストアンサー

僕の環境ではこれで問題なく動きます。

insertMemberには配列で、insertMemberAssocには連想配列でデータを渡す必要があります。

<?php
require_once 'MDB2.php';

$dsn = 'mysql://user:password@localhost/test';
$options = array(
 'debug' => 2,
 'result_buffering' => false,
);

$mdb2 =& MDB2::factory($dsn, $options);

$data = array(1000,
 'テスト太郎',
 'http://example.com/image.png',
 1,
 date('Y-m-d H:i:s'),
 date('Y-m-d H:i:s'));
insertMember($data);

$data = array('member_id' => 1001,
 'name' => 'テスト次郎',
 'profile_image_mobile' => 'http://example.com/image.png',
 'gender' => 1,
 'created' => date('Y-m-d H:i:s'),
 'updated' => date('Y-m-d H:i:s'));
insertMemberAssoc($data);


$mdb2->disconnect();

function insertMember($row)
{
 global $mdb2;

 $sql = <<< SQL
INSERT INTO
 member
(member_id,
 name,
 profile_image_mobile,
 gender,
 created,
 updated
)
VALUES
 (?,?,?,?,?,?)
SQL;

 $sth = $mdb2->prepare($sql);
 if (PEAR::isError($sth)) {
 die($sth->getMessage());
 }
 $result = $sth->execute($row);
 if (PEAR::isError($result)) {
 die($result->getMessage());
 }
}

function insertMemberAssoc($row)
{
 global $mdb2;

 $sql = <<< SQL
INSERT INTO
 member
(member_id,
 name,
 profile_image_mobile,
 gender,
 created,
 updated
 )
VALUES
 (:member_id, :name, :profile_image_mobile, :gender, :created, :updated)
SQL;

 $sth = $mdb2->prepare($sql);
 if (PEAR::isError($sth)) {
 die($sth->getMessage());
 }
 $result = $sth->execute($row);
 if (PEAR::isError($result)) {
 die($result->getMessage());
 }
}

?>

何かの参考になれば。


aiueoさんのコメント
すみません、ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ