[PHP-users 33935] Re: mysqli_stmt_bind_paramの使い方

TANAKA Masayuki tanakamasayuki @ gmail.com
2008年 8月 5日 (火) 22:30:06 JST


こんにちは田中です。

> マニュアルを見るとbind_paramの第2引数は「mixed &$var1」となっており、
> 配列が使えると思い、上記のように記述してみたのですが、
> prepareがfalseを返します。
> bind_paramの第2引数に配列ではなく、
> $stmt->bind_param( 'sss', $data[0], $data[1], $data[2] );
> のように、3つ独立して渡すと成功します。
> 配列は使えないのでしょうか?

おそらく使えないと思います

> また使えない場合、実運用ではこの第2引数の個数が動的に変わるので
> 配列に変わる良い方法はないものでしょうか。
> もちろんその場合は第1引数も動的に変えます。

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);

$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;

$stmt->execute();

http://www.php.net/manual/ja/mysqli-stmt.bind-param.php

この構文は上記のような使い方を想定されています
動的に個数が変わる場合ってSQLから変える必要がありますよね?

PEAR:DB や PEAR:MDB2 とかを利用すれば配列で渡す方法も
あったかもしれません

とはいえ、個数が可変の場合には自分でSQLを作った方が楽だと
思いますよ

一般的には配列ではなくて通常の方法で対応可能な場合が多いです
ので、利用方法をもう一度見直した方がよいと思います

たなか


PHP-users メーリングリストの案内