Jul 17
次期バージョンのNucleus3.5では、遂にPDOがサポートされます。
とはいっても100%純粋なPDOサポートではなく、今までのSQLをそのまま残した形でのPDOサポートになるので、データベースのサポートはとりあえずMySQLだけになりそうですが。
現状のプラグインの大多数は、おそらくそのままではPDOでは使えませんが、「mysql_*」関数を「sql_*」と書き換えるだけでPDOで使えるようになります。
ただしいくつかの関数は、PDO関数とMySQL関数の挙動の違いを吸収するために書き換えないとダメだったりします。
いろんなプラグインの「mysql_*」を「sql_*」に書き換えて実験してみたんだけど、「sql_fetch_field」で第2引数を指定せずに実行した場合。
デフォルトだと
と書くと、$nameにカラム名が次々に入っていくはずなんだけど、
にすると、常に一番最初のカラムの名前が代入されちゃいます。
なので、
と、第2引数を指定してやらないと想定外のエラーが出ます。
これは「sql_field_name」も同じで、この二つの関数については、PDOで同じ事をしたい場合に使えそうな関数が「getColumnMeta()」くらいしか見つけられないからなんですが、これが「何番目の」ってのを指定してやらないといけないからなわけで……
どなたか他にいい関数知ってる人がいれば教えてください……
つーかPDOをMySQLに合わせるんじゃなくて、MySQLをPDOに合わせるラッパー作って欲しかったなぁ……
それともう一つ。
コアのコードから「更新通知ping」関連のコードがほぼ消えました。まだ相変わらず「justPostedイベント」は残ってますが、これもそのうち消える予定です。「sendPingイベント」を使ってたり、$blog->rowPing()関数使ってるプラグインがもしあれば、もう使えなくなるので代替を探すようにしましょう。
とはいっても100%純粋なPDOサポートではなく、今までのSQLをそのまま残した形でのPDOサポートになるので、データベースのサポートはとりあえずMySQLだけになりそうですが。
現状のプラグインの大多数は、おそらくそのままではPDOでは使えませんが、「mysql_*」関数を「sql_*」と書き換えるだけでPDOで使えるようになります。
ただしいくつかの関数は、PDO関数とMySQL関数の挙動の違いを吸収するために書き換えないとダメだったりします。
いろんなプラグインの「mysql_*」を「sql_*」に書き換えて実験してみたんだけど、「sql_fetch_field」で第2引数を指定せずに実行した場合。
デフォルトだと
for ($i=0; $i<mysql_num_fields($check_column); $i++) {
if ($meta = mysql_fetch_field($check_column)) {
$names[] = $meta->name;
}
}と書くと、$nameにカラム名が次々に入っていくはずなんだけど、
for ($i=0; $i<mysql_num_fields($check_column); $i++) {
if ($meta = sql_fetch_field($check_column)) {
$names[] = $meta->name;
}
}にすると、常に一番最初のカラムの名前が代入されちゃいます。
なので、
for ($i=0; $i<mysql_num_fields($check_column); $i++) {
if ($meta = sql_fetch_field($check_column, $i)) {
$names[] = $meta->name;
}
}と、第2引数を指定してやらないと想定外のエラーが出ます。
これは「sql_field_name」も同じで、この二つの関数については、PDOで同じ事をしたい場合に使えそうな関数が「getColumnMeta()」くらいしか見つけられないからなんですが、これが「何番目の」ってのを指定してやらないといけないからなわけで……
どなたか他にいい関数知ってる人がいれば教えてください……
つーかPDOをMySQLに合わせるんじゃなくて、MySQLをPDOに合わせるラッパー作って欲しかったなぁ……
それともう一つ。
コアのコードから「更新通知ping」関連のコードがほぼ消えました。まだ相変わらず「justPostedイベント」は残ってますが、これもそのうち消える予定です。「sendPingイベント」を使ってたり、$blog->rowPing()関数使ってるプラグインがもしあれば、もう使えなくなるので代替を探すようにしましょう。
No Responses to “ Nucleus v3.5での変更点二つ ”
Leave a Reply
OpenID を使ってログインすることができます。
このエントリにトラックバックはありません
この記事のトラックバックURL
http://shizuki.kinezumi.net/item_722.trackback(右クリックで'ショートカットの保存')
トラックバックするにはこの記事へのリンクhttp://shizuki.kinezumi.net/item_722.htmlが必要です

Latest Comments
naiz:
上記の件ですが、NP_SendPingだとうまくいき、NP_PingJPだと...
naiz:
しづきさん お返事ありがとうございます。 どの相手側サ...
しづき:
naizさん 「Connection timed out」なので、何らかの原因で...
naiz:
たびたびすみません。 item_710.htmlの記事にコメントしよう...
naiz:
> しづきさん あっ、確認不足でした!ちゃんとカスタマイ...