質問

利用:MySQL5.1+PHP5.3.5

MySQL:

id in "table" is defined as: mediumint(6) zerofill not null

を取得します期待された結果利用の場合:

$mysqli->query("SELECT id FROM table WHERE id = 1");
while($row = $ret->fetch_array(MYSQLI_ASSOC)) $arr[] = $row;
>>> $arr[0]["id"] = 000001

な利用の場合意書:

$ret = $mysqli->prepare("SELECT id FROM table WHERE id = ?");
call_user_func_array(array($ret,"bind_param"),array("i",1));
$ret->execute();
$ret->store_result();
$meta = $ret->result_metadata();
$fields = $meta->fetch_fields();
$cols = array(); $data = array();
foreach($fields as $field) $cols[] = &$data[$field->name];
call_user_func_array(array($ret, 'bind_result'), $cols);
while($ret->fetch()) {
    $row = array();
    foreach($data as $key => $val) $row[$key] = $val;
    $arr[] = $row;
}
>>> $arr[0]["id"] = 1

していこうとの声を直接MySQLのコンソールで期待どおりに事(MySQL).

によるPHP mysqli_stmt::bind_result 文書のためのシェア:

によってはカラム種類の結合変数で黙々と変化の 対応するPHPのタイプです。

いので、末尾のゼロをなくしていますので、後。多くの分野zerofillの工程はほぼ自動化からのデータを画面にて修正この後このコードが必要となる市長は変わります。

他のヒントをいかにこの問題を解決することを歓迎する。

役に立ちましたか?

解決 3

他の溶液を指定する場として小数点(6,0).何らかの理由で動作す(変更なしのコードが必要です。

他のヒント

のzerofillさまが迷子になってしまったので、mysqliであることを知りカラムは整数型のタイプのphpの変数となりまintなどの先頭に迷ってしまうほど。

このえのみされるようにすることがご利用の準備には、発言と発言間の関係を明確mysqli(PDOされていないように見えてきました。

防mysqliの型変数の整数を変更するタイプのMySQLるものが返される文字列として返します。

方法が二つあります:

  1. CAST(intCol AS CHAR) かぶりの整数を含む先行するゼロ、文字列になります。
  2. のzerofilled整数文字列、例えば CONCAT(intCol, "").

注意:ご利用の場合この値は、HTML5入力フィールドの型 number, このまま剥先頭に(少なくとも一部のブラウザ).この問題を解決するのでしょ この答え.

一時、私は解決で追加することで、ライン:

define("ZEROFILL_FLAG",64);
$zeros = array();
foreach($fields as $field) {
    $zeros[$field->name] = $field->flags & ZEROFILL_FLAG ? $field->length : 0;
    $cols[] = &$data[$field->name];
}   
call_user_func_array(array($ret, 'bind_result'), $cols);
while($ret->fetch()) {
    $row = array();
    foreach($data as $key => $val) {
        $row[$key] = $zeros[$key] > 0 ? sprintf('%0'.$zeros[$key].'s', $val) : $val;
    }   
    $arr[] = $row;
}  

まだ思うので見せてくれより良い解決方法の一つです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top