Использование: MySQL 5.1 + PHP 5.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.
Мне нужно показать число сконечные нули без необходимости делать это на более позднем этапе.С нулевым заполнением есть так много полей, и процесс практически автоматизирован от данных до экрана, поэтому попытка исправить это после этого кода потребует изменений мэра.
Любой намек на решение этой проблемы приветствуется.