Marc Delisle a écrit :
Sebastian Mendel a écrit :
Marc Delisle wrote:
Hi,
can someone reproduce this? HEAD no longer works correctly with MySQL
4.0.x, with mysqli extension. Many symptoms occur, for example:
structure only shows the first 7 fields of a table; insert no longer
works, etc.
Looks like the output of SHOW FIELDS, when fetched in a loop by
PMA_DBI_fetch_assoc(), stops after reading the 7th row.
Same server works well with QA_2_6_4 + mysqli extension. Works well
with HEAD + mysql extension.
I know that mysqli is targeted to MySQL 4.1.x+, but...
oh, i dont see there any 'but'
mysqli uses many new api functions not supported by mysql <4.1
i think we should and can not take care of this ...
I'll continue my testing. I have the problem with PHP 5.1.0-dev of last
week. Maybe we should at least give a warning to phpMyAdmin users. Let
me talk to Georg about this.
Marc
Ok, it looks like a PHP problem (seen at least in 5.1.0-dev). I have put
a workaround in mysqli.dbi.lib.php. The PHP problem itself is not
specific to MySQL 4.0.x and I reported it to Georg.
To reproduce:
<?php
$link = mysqli_init();
mysqli_options($link, MYSQLI_OPT_LOCAL_INFILE, TRUE);
$server_port = FALSE;
$server_socket = NULL;
$client_flags = 0;
$server = "";
$user = "";
$password = "";
mysqli_real_connect($link, $server, $user, $password, FALSE,
$server_port, $serv
er_socket, $client_flags);
mysqli_select_db($link, 'mysql');
$result = mysqli_query($link, 'SHOW FULL FIELDS FROM user',
MYSQLI_STORE_RESULT)
;
$fields_cnt = mysqli_num_rows($result);
echo '<pre>';
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo '<hr>';
print_r($row);
$num = mysqli_num_fields($result);
$fields = mysqli_fetch_fields($result);
if (is_array($fields)) {
echo '$fields is an array';
print_r($fields);
} else {
echo 'why $fields is not an array?';
}
}
echo '</pre>';
?>
========================
Now a question: in mysqli.dbi.lib.php, function
PMA_mysqli_fetch_array(), when this function is called by
function PMA_DBI_fetch_assoc($result) {
return PMA_mysqli_fetch_array($result, MYSQLI_ASSOC);
}
we only have ASSOC as a result, but in PMA_mysqli_fetch_array(), when we
need to convert, we are looking for $data[$i]. This seems wrong to me
in this case since we won't get numeric indices.
This is why my workaround avoids converting the data.
Marc