天使と悪魔選手権

//処理

~ 省略 ~

$result = sqlite_query($sql,$db_res);
$info = sqlite_fetch_■■■■($result,SQLITE_ASSOC);
$page_num = $info['page_num'];

//以下、チェック文

//チェック(1)
echo var_dump($info);
echo "<br>";

//チェック(2)
echo var_dump($page_num);
echo "<br>";

//チェック(3)
print_r($info);
echo "<br>";

//チェック(4)
echo $page_num."<br>";

//---------------------------------
// ブラウザに表示される内容↓
//---------------------------------

//---------------------------------
<■■■■が、singleの場合>

string(3) "200"
string(1) "2"
200
2

//---------------------------------
<■■■■が、arrayの場合>

array(1) { ["page_num"]=> string(3) "200" }
string(3) "200"
Array ( [page_num] => 200 )
200

//---------------------------------

私は、singleを使って、

echo $page_num; によって、「200」を
得たかったのですが、「2」が出てきてしまい、
困ってしまいました。

これは、なぜなんでしょう?
singleの仕組みがよく分かりません。

※arrayを使えば、結果的には問題は解決するのですが、
 singleの、この謎を解きたいがために、質問しました。

よろしくお願い致します。
(質問とは関係ありませんが、このサイト、現在かなり重くないでしょうか?)

A 回答 (1件)

http://www.php.net/manual/ja/function.sqlite-fet …
「結果セットの最初のカラムを文字列として取得する」
となっておりますとおり、取得された一番最初に入っているフィールドの文字列を出力します。

で、なぜ、「2」が出力されたのか、に関しましては、下記のサンプルを見てください。
<?php

$string = 'abcdefghijklmnopqrstu';

echo $string[1];

?>
文字列を配列として出力しますと、1バイトずつ表示されます。
上の例ですと、配列の2番目なので、「b」が出力されます。
今回、$info['page_num']とされておりますが、この場合は、'page_num'が0と解釈されるようで、1番目の文字である「2」が出力されております。
    • good
    • 0
この回答へのお礼

早速の回答、どうもありがとうございます。
サンプルの例のような仕組みで、文字列の一部が出力されていたんですね。
おかげさまで、スッキリ解決しました。

$info = sqlite_fetch_■■■■($result,SQLITE_ASSOC);
$page_num = $info['page_num'];

これは、■■■■がarrayの時に私がよく使う流れですが、
singleの時には適当でないことがよく分かりました。

こんなに早く解決するとは思っていなかったので、嬉しいです。
ありがとうございました!

お礼日時:2009/08/15 22:45

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