Vous êtes sur la page 1sur 21

mysql_fetch_array

(PHP 4, PHP 5)
mysql_fetch_array - Extrae la fila de resultado como una matriz asociativa, una
matriz numrica o ambas
Advertencia
Esta extensin est en desuso a partir de PHP 5.5.0, y se eliminar en el
futuro. En lugar de ello, la MySQLi o PDO_MySQL debe utilizarse
extensin. Vase tambin MySQL: escoger una API gua y FAQ relacionado para
ms informacin. Las alternativas a esta funcin son:
mysqli_fetch_array ()
PDOStatement :: fetch ()
Descripcin
array mysql_fetch_array (resource $result [, int $result_type =
MYSQL_BOTH])
Devuelve una matriz que corresponde a la fila recuperada y mueve el puntero
interno de datos por delante.
Parmetros
result
El resultado de los recursos que se est evaluando. Este resultado proviene
de una llamada a mysql_query () .
result_type
El tipo de matriz que est siendo exagerado. Es una constante y puede
tomar los siguientes valores:MYSQL_ASSOC , MYSQL_NUM y MYSQL_BOTH .
Valor de retorno
Devuelve una matriz de cadenas que corresponde a la fila recuperada, o FALSE si
no hay ms filas. El tipo de matriz devuelta depende de cmo result_type est
definido. Mediante el uso de MYSQL_BOTH (por defecto), obtendr una matriz con
dos asociativo y los ndices numricos. Usando MYSQL_ASSOC , que slo te dan
ndices asociativos (como mysql_fetch_assoc () funciona), utilizando MYSQL_NUM ,
que slo te dan los ndices numricos (como mysql_fetch_row () funciona).
Si dos o ms columnas del resultado tienen los mismos nombres de campo, la
ltima columna tomar precedencia. Para acceder a la otra columna (s) del mismo
nombre, debe utilizar el ndice numrico de la columna o definir un alias para la
columna. Para las columnas con alias, no podr acceder a los contenidos con el
nombre original de la columna.
Ejemplos
Ejemplo # 1 consulta con los nombres de campo duplicados con alias
SELECT table1.field AS foo, table2.field as bar from tabla1, tabla2
Ejemplo # 2 mysql_fetch_array () con MYSQL_NUM
<?php
mysql_connect ( "localhost" , "mysql_user" , "mysql_password" ) or
die( "Could not connect: " . mysql_error ());
mysql_select_db ( "mydb" );

$result = mysql_query ( "SELECT id, name FROM mytable" );

while ( $row = mysql_fetch_array ( $result , MYSQL_NUM )) {
printf ( "ID: %s Name: %s" , $row [ 0 ], $row [ 1 ]);
}

mysql_free_result ( $result );
?>
Ejemplo # 3 mysql_fetch_array () con MYSQL_ASSOC
<?php
mysql_connect ( "localhost" , "mysql_user" , "mysql_password" ) or
die( "Could not connect: " . mysql_error ());
mysql_select_db ( "mydb" );

$result = mysql_query ( "SELECT id, name FROM mytable" );

while ( $row = mysql_fetch_array ( $result , MYSQL_ASSOC )) {
printf ( "ID: %s Name: %s" , $row [ "id" ], $row [ "name" ]);
}

mysql_free_result ( $result );
?>
Ejemplo # 4 mysql_fetch_array () con MYSQL_BOTH
<?php
mysql_connect ( "localhost" , "mysql_user" , "mysql_password" ) or
die( "Could not connect: " . mysql_error ());
mysql_select_db ( "mydb" );

$result = mysql_query ( "SELECT id, name FROM mytable" );

while ( $row = mysql_fetch_array ( $result , MYSQL_BOTH )) {
printf ( "ID: %s Name: %s" , $row [ 0 ], $row [ "name" ]);
}

mysql_free_result ( $result );
?>
Notas
Nota: El rendimiento
Una cosa importante a tener en cuenta es que el uso de mysql_fetch_array
() no es significativamente ms lento que usar mysql_fetch_row () , mientras que
proporciona un valor aadido significativo.
Nota: Los nombres de campos retornados por esta funcin entre maysculas y
minsculas.
Nota: Esta funcin establece campos NULL al PHP NULL valor.
Vea tambin
mysql_fetch_row () - Devuelve una fila de resultado como una matriz
enumerada
mysql_fetch_assoc () - Recupera una fila de resultado como una matriz
asociativa
mysql_data_seek () - Mueve el puntero del resultado interno
mysql_query () - Enva una consulta de MySQL
aadir una nota
Notas de usuario Contribuido 31 notas
hasta
abajo
8
maileremi at gmail dot com
Hace 2 aos
Simple way to put table in an array...

<?php
//= Query ========================//
$sql = mysql_query ( "select * from table1" );

//= Closed while ====================//
/*everytime it fetches the row, adds it to array...*/
while( $r []= mysql_fetch_array ( $sql ));

echo "<pre>" ;
//= Prints $r as array =================//
print_r ( $r );
//=============================//
echo "</pre>" ;
?>
hasta
abajo
3
mehdi dot haresi at gmail dot com
Hace 4 aos
For all of you having problems accessing duplicated field names in
queries with their table alias i have implemented the following quick
solution:

<?php
function mysql_fetch_alias_array ( $result )
{
if (!( $row = mysql_fetch_array ( $result )))
{
return null ;
}

$assoc = Array();
$rowCount = mysql_num_fields ( $result );

for ( $idx = 0 ; $idx < $rowCount ; $idx ++)
{
$table = mysql_field_table ( $result , $idx );
$field = mysql_field_name ( $result , $idx );
$assoc [ " $table . $field " ] = $row [ $idx ];
}

return $assoc ;
}
?>

Lets asume we have 2 tables student and contact each having fID as the
index field and want to access both fID fields in php.

The usage of this function will be pretty similar to calling
mysql_fetch_array:

<?php
$result = mysql_query ( "select * from student s inner join contact c on
c.fID = s.frContactID" );

while ( $row = mysql_fetch_alias_array ( $result ))
{
echo "StudenID: { $row [ 's.fID' ]} , ContactID: { $row [ 'c.fID' ]} " ;
}
?>

Voila, that's it :)

Please be aware that by using this function, you have to access all
fields with their alias name (egsName, s.Birhtday) even if they are not
duplicated.

If you have questions, just send me a mail.

Best regards,
Mehdi Haresi
die-webdesigner.at
hasta
abajo
3
KingIsulgard
Hace 5 aos
I have found a way to put all results from the select query in an array
in one line.

// Read records
$result = mysql_query("SELECT * FROM table;") or die(mysql_error());

// Put them in array
for($i = 0; $array[$i] = mysql_fetch_assoc($result); $i++) ;

// Delete last empty one
array_pop($array);

You need to delete the last one because this will always be empty.

By this you can easily read the entire table to an array and preserve the
keys of the table columns. Very handy.
hasta
abajo
1
robjohnson al agujero negro dot com
Hace 12 aos
Benchmark on a table with 38567 rows:

mysql_fetch_array
MYSQL_BOTH: 6.01940000057 secs
MYSQL_NUM: 3.22173595428 secs
MYSQL_ASSOC: 3.92950594425 secs

mysql_fetch_row: 2.35096800327 secs
mysql_fetch_assoc: 2.92349803448 secs

As you can see, it's twice as effecient to fetch either an array or a
hash, rather than getting both. it's even faster to use fetch_row rather
than passing fetch_array MYSQL_NUM, or fetch_assoc rather than
fetch_array MYSQL_ASSOC. Don't fetch BOTH unless you really need them,
and most of the time you don't.
hasta
abajo
1
joey en q7 punto limpio dot com
Hace 10 aos
The issue of NULL fields seems to not be an issue anymore (as of 4.2.2 at
least). mysql_fetch_* now seems to fully populate the array and put in
entries with values of NULL when that is what the database returned. This
is certainly the behaviour I expected, so I was concerned when i saw the
notes here, but testing shows it does work the way I expected.
hasta
abajo
1
Tristn
Hace 4 aos
Here's a quicker way to clone a record. Only 3 lines of code instead of
4. But the table must have an auto-incremented id.
I took the code from Tim and altered it. Props to Tim.

<?php
// copy content of the record you wish to clone
$entity = mysql_fetch_array ( mysql_query ( "SELECT * FROM table_name
WHERE id=' $id_to_be cloned'"), MYSQL_ASSOC ) or die( "Could not select
original record" );

// set the auto-incremented id's value to blank. If you forget this step,
nothing will work because we can't have two records with the same id
$entity [ "id" ] = "" ;

// insert cloned copy of the original record
mysql_query ( "INSERT INTO table_name (" . implode ( ",
" , array_keys ( $entity )). ") VALUES ('" .implode ( "',
'" , array_values ( $entity )). "')" );

// if you want the auto-generated id of the new cloned record, do the
following
$newid = mysql_insert_id ();
?>

There you go.
hasta
abajo
1
dkantha en yahoo punto com
Hace 11 aos
I did find 'jb at stormvision's' code useful above, but instead of the
number of rows you need the number of fields; otherwise you get an
error.

So, it should read like the following:

$result=mysql_query("select * from mydata order by 'id'")or die('died');
$num_fields = mysql_num_fields($result);
$j=0;
$x=1;
while($row=mysql_fetch_array($result)){
for($j=0;$j<$num_fields;$j++){
$name = mysql_field_name($result, $j);
$object[$x][$name]=$row[$name];
}$x++;
}

For Later in the script you may use the below array to gain access to
your data

$i=1;
$ii=count($object); //quick access function
for($i=1;$i<=$ii;$i++){
echo $object[$i]['your_field_name'];
}

I have tested this in my apps and it works great! :-)
hasta
abajo
0
scott_carney en hotmail punto com
Hace 2 aos
Just thought I'd share these helper functions that I use to simplify
processing of query results a bit:
<?php
// For a simple query that should return a single value, this returns
just that value (or FALSE) so you can process it immediately
function db_result_single ( $result ) {
return ( $row = mysql_fetch_row ( $result )) && isset( $row [ 0 ])
? $row [ 0 ] : false ;
}

// Returns the rows as an array of rows
// Providing a key_column gives you access to specific rows (eg if
(isset($result_array[$user_id])) ...)
function db_result_array ( $result , $key_column = null ) {
for ( $array = array(); $row = mysql_fetch_assoc ( $result );
isset( $row [ $key_column ]) ? $array[ $row [ $key_column ]]
= $row : $array [] = $row );
return $array ;
}

// Returns an array of a single column of data that can optionally be
keyed from second column (eg an array of user names keyed by user id)
function db_result_array_values ( $result ) {
for ( $array = array(); $row = mysql_fetch_row ( $result );
isset( $row [ 1 ]) ? $array [ $row [ 1]] = $row [ 0 ] : $array []
= $row [ 0 ]);
return $array ;
}
?>

Naturally, comments [to my email, not here] are welcome.
hasta
abajo
0
puzbie en facebookanswers dot co dot uk
Hace 2 aos
<?php
while( $r []= mysql_fetch_array ( $sql ));
?>

Yes, that will generate a dummy array element containing the false of the
final mysql_fetch_array. You should either truncate the array or (more
sensibly in my mind) check that the result of mysql_fetch_array is not
false before adding it to the array.
hasta
abajo
0
Amina O
Hace 3 aos
If you use implode() with the return value by mysql_fetch_array, if you
use MYSQL_BOTH on parameter 2, the result is not really what you're
expecting.
For example :
my sql database contains "Amine, Sarah, Mohamed";

$array = mysql_fetch_array($resource,MYSQL_BOTH);
or $array = mysql_fetch_array($resource);
echo implode(" - ", $array);

the result is : Amine-Amine-Sarah-Sarah-Mohamed-Mohamed
and we expect just : Amine-Sarah-Mohamed

You must use MYSQL_NUM or MYSQL_ASSOC on parameter 2 to resolve the
problem.
hasta
abajo
0
amigo en databoysoftware dot com
Hace 4 aos
In the note entered by Typer85, concerning the use of mysql_data_seek(),
it should be noted that there are two parameters, both of which are
required.

If you have already iterated through a result array (for instance, using
mysql_fetch_array()), and have a need to start from the top, the proper
syntax is:

mysql_data_seek({result set},{record#})

EG:
mysql_data_seek($result,0)
("0" represents the first record in the array.)

This will reset your result to the top of the array so that you can then
re-process with
while($row = mysql_fetch_array($result)) or other array processing.
hasta
abajo
0
noagbodjivictor at gmail dot com
Hace 6 aos
Little improvement to the previous function.

function mysql_fetch_rowsarr($result, $numass=MYSQL_BOTH) {
$got = array();

if(mysql_num_rows($result) == 0)
return $got;

mysql_data_seek($result, 0);

while ($row = mysql_fetch_array($result, $numass)) {
array_push($got, $row);
}

return $got;
}
hasta
abajo
0
john en skem9 dot com
Hace 8 aos
my main purpose was to show the fetched array into a table, showing the
results side by side instead of underneath each other, and heres what
I've come up with.

just change the $display number to however many columns you would like to
have, just dont change the $cols number or you might run into some
problems.

<?php
$display = 4 ;
$cols = 0 ;
echo "<table>" ;
while( $fetched = mysql_fetch_array ( $result )){
if( $cols == 0 ){
echo "<tr>\n" ;
}
// put what you would like to display within each cell here
echo "<td>" . $fetched [ 'id' ]. "<br
/>" . $fetched [ 'name' ]. "</td>\n" ;
$cols ++;
if( $cols == $display ){
echo "</tr>\n" ;
$cols = 0 ;
}
}
// added the following so it would display the correct html
if( $cols != $display && $cols != 0 ){
$neededtds = $display - $cols ;
for( $i = 0 ; $i < $neededtds ; $i ++){
echo "<td></td>\n" ;
}
echo "</tr></table>" ;
} else {
echo "</table>" ;
}
?>

Hopefully this will save some of you a lot of searching.

any kind of improvements on this would be awesome!
hasta
abajo
0
eddie en nailchipper dot com
Hace 8 aos
mob AT stag DOT ru has a nice function for getting simple arrays from
MySQL but it has a serious bug. The MySQL link being set as an argument
is NULL when no link is supplied meaning that you're passing NULL to the
mysql funcctions as a link, which is wrong. I am not using multitple
connections so I removed the link and using the global link. If you want
to support multiple links check to see if its set first.

/*
* to support multiple links add the $link argument to function then
* test it before you use the link
*
* if(isset($link))
* if($err=mysql_errno($link))return $err;
* else
* if($err=mysql_errno())return $err;
*/

function mysql_fetch_all($query){
$r=@mysql_query($query);
if($err=mysql_errno())return $err;
if(@mysql_num_rows($r))
while($row=mysql_fetch_array($r))$result[]=$row;
return $result;
}
function mysql_fetch_one($query){
$r=@mysql_query($query);
if($err=mysql_errno())return $err;
if(@mysql_num_rows($r))
return mysql_fetch_array($r);
}
hasta
abajo
0
mob AT ciervo DOT ru
Hace 9 aos
I wrote some utility functions to improve usability and readability, and
use them everywhere in my code. I suppose they can help.

function mysql_fetch_all($query,$MySQL=NULL){
$r=@mysql_query($query,$MySQL);
if($err=mysql_errno($MySQL))return $err;
if(@mysql_num_rows($r))
while($row=mysql_fetch_array($r))$result[]=$row;
return $result;
}
function mysql_fetch_one($query,$MySQL=NULL){
$r=@mysql_query($query,$MySQL);
if($err=mysql_errno($MySQL))return $err;
if(@mysql_num_rows($r))
return mysql_fetch_array($r);
}

Example use:
if(is_array($rows=mysql_fetch_all("select * from sometable",$MySQL))){
//do something
}else{
if(!is_null($rows)) die("Query failed!");
}
hasta
abajo
0
Ben
Hace 10 aos
One of the most common mistakes that people make with this function, when
using it multiple times in one script, is that they forget to use the
mysql_data_seek() function to reset the internal data pointer.

When iterating through an array of MySQL results, eg

<?php
while ( $line = mysql_fetch_array ( $result , MYSQL_ASSOC )) {
foreach ( $line as $col_value ) {
echo $col_value . '<br />' ;
}
}
?>

the internal data pointer for the array is advanced, incrementally, until
there are no more elements left in the array. So, basically, if you
copy/pasted the above code into a script TWICE, the second copy would not
create any output. The reason is because the data pointer has been
advanced to the end of the $line array and returned FALSE upon doing so.

If, for some reason, you wanted to interate through the array a second
time, perhaps grabbing a different piece of data from the same result
set, you would have to make sure you call

<?php
mysql_data_seek ( $result , 0 );
?>

This function resets the pointer and you can re-iterate through the $line
array, again!
hasta
abajo
0
hanskrentel en yahoo punto de
Hace 11 aos
for the problem with fields containing null values in an associated
array, feel free to use this function. i've got no more problems with it,
just drop it in your script:

/*
* mysql_fetch_array_nullsafe
*
*
* get a result row as an enumerated and associated array
* ! nullsafe !
*
* parameter: $result
* $result: valid db result id
*
* returns: array | false (mysql:if there are any more rows)
*
*/
function mysql_fetch_array_nullsafe($result) {
$ret=array();

$num = mysql_num_fields($result);
if ($num==0) return $ret;

$fval = mysql_fetch_row ($result);
if ($fval === false) return false;

$i=0;
while($i<$num)
{
$fname[$i] = mysql_field_name($result,$i);
$ret[$i] = $fval[$i]; // enum
$ret[''.$fname[$i].''] = $fval[$i]; // assoc
$i++;
}

return $ret;
}
hasta
abajo
0
glenn Hoeppner punto en yakhair dot com
Hace 11 aos
Just another workaround for columns with duplicate names...

Modify your SQL to use the AS keyword.

Instead of:
$sql = "SELECT t1.cA, t2.cA FROM t1, t2 WHERE t1.cA = t2.cA";

Try:
$sql = "SELECT t1.cA AS foo1, t2.cA AS foo2 FROM t1, t2 WHERE t1.cA =
t2.cA";

Then you can reference the results by name in the array:
$row[foo1], $row[foo2]
hasta
abajo
0
tslukka en cc dot dot choza fi
Hace 11 aos
If you think MySQL (or other) database
handling is difficult and requires lot's of
code, I recommend that you try http://titaniclinux.net/daogen/

DaoGen is a program source code generator
that supports PHP and Java. It makes database
programming quick and easy. Generated sources
are released under GPL.
hasta
abajo
0
algunos en GamePoint Dot Net
Hace 12 aos
I never had so much trouble with null fields but it's to my understanding
that extract only works as expected when using an associative array only,
which is the case with mysql_fetch_assoc() as used in the previous note.

However a mysql_fetch_array will return field values with both the
numerical and associative keys, the numerical ones being those extract()
can't handle very well.
You can prevent that by calling mysql_fetch_array($result,MYSQL_ASSOC)
which will return the same result as mysql_fetch_assoc and is extract()
friendly.
hasta
abajo
-1
final en experto ch dot
Hace 2 aos
I ran into troubles with MySQL NULL values when I generated dynamic
queries and then had to figure out whether my resultset contained a
specific field.

First instict was to use isset() and is_null(), but these function will
not behave as you probably expect.

I ended up using array_key_exists, as it was the only function that could
tell me whether the key actually existed or not.

<?php
$row = mysql_fetch_assoc ( mysql_query ( "SELECT null as a" ));
var_dump ( $row ); //array(1) { ["a"]=> NULL }
var_dump (isset( $row [ 'a' ])); //false
var_dump (isset( $row [ 'b' ])); //false
var_dump ( is_null ( $row [ 'a' ])); //true
var_dump ( is_null ( $row [ 'b' ])); //true + throws undefined index
notice
var_dump ( array_key_exists ( 'a' , $row )); // true
var_dump ( array_key_exists ( 'b' , $row )); // false
?>
hasta
abajo
-1
romans en Servidor dot dot unam mx
Hace 9 aos
Regarding duplicated field names in queries, I wanted some way to
retrieve rows without having to use alias, so I wrote this class that
returns rows as 2d-arrays

<?
$field = $drow['table']['column'];
?>

Here is the code:

<?
class mysql_resultset
{
var $results, $map;

function mysql_resultset($results)
{
$this->results = $results;
$this->map = array();

$index = 0;
while ($column = mysql_fetch_field($results))
{
$this->map[$index++] = array($column->table, $column->name);
}
}

function fetch()
{
if ($row = mysql_fetch_row($this->results))
{
$drow = array();

foreach ($row as $index => $field)
{
list($table, $column) = $this->map[$index];
$drow[$table][$column] = $row[$index];
}

return $drow;
}
else
return false;
}
}
?>

The class is initialized with a mysql_query result:

<?
$resultset = new mysql_resultset(mysql_query($sql));
?>

The constructor builds an array that maps each field index to a ($table,
$column) array so we can use mysql_fetch_row and access field values by
index in the fetch() method. This method then uses the map to build up
the 2d-array.

An example:

<?
$sql =
"select orders.*, clients.*, productos.* ".
"from orders, clients, products ".
"where join conditions";

$resultset = new mysql_resultset(mysql_query($sql));

while ($drow = $resultset->fetch())
{
echo 'No.: '.$drow['orders']['number'].'<br>';
echo 'Client: '.$drow['clients']['name'].'<br>';
echo 'Product: '.$drow['products']['name'].'<br>';
}
?>

I hope others find this useful as it has been to me.
hasta
abajo
-1
Typer85 at gmail dot com
Hace 7 aos
Please be advised that the resource result that you pass to this function
can be thought of as being passed by reference because a resource is
simply a pointer to a memory location.

Because of this, you can not loop through a resource result twice in the
same script before resetting the pointer back to the start position.

For example:

----------------
<?php

// Assume We Already Queried Our Database.

// Loop Through Result Set.

while( $queryContent = mysql_fetch_row ( $queryResult ) {

// Display.

echo $queryContent [ 0 ];
}

// We looped through the resource result already so the
// the pointer is no longer pointing at any rows.

// If we decide to loop through the same resource result
// again, the function will always return false because it
// will assume there are no more rows.

// So the following code, if executed after the previous code
// segment will not work.

while( $queryContent = mysql_fetch_row ( $queryResult ) {

// Display.

echo $queryContent [ 0 ];
}

// Because $queryContent is now equal to FALSE, the loop
// will not be entered.

?>
----------------

The only solution to this is to reset the pointer to make it point at the
first row again before the second code segment, so now the complete code
will look as follows:

----------------
<?php

// Assume We Already Queried Our Database.

// Loop Through Result Set.

while( $queryContent = mysql_fetch_row ( $queryResult ) {

// Display.

echo $queryContent [ 0 ];
}

// Reset Our Pointer.

mysql_data_seek ( $queryResult );

// Loop Again.

while( $queryContent = mysql_fetch_row ( $queryResult ) {

// Display.

echo $queryContent [ 0 ];
}

?>
----------------

Of course you would have to do extra checks to make sure that the number
of rows in the result is not 0 or else mysql_data_seek itself will return
false and an error will be raised.

Also please note that this applies to all functions that fetch result
sets, including mysql_fetch_row, mysql_fetch_assos, and
mysql_fetch_array.
hasta
abajo
-1
tim en wiltshirewebs dot com
Hace 8 aos
Here's a quick way to duplicate or clone a record to the same table using
only 4 lines of code:

// first, get the highest id number, so we can calc the new id number for
the dupe
// second, get the original entity
// third, increment the dupe record id to 1 over the max
// finally insert the new record - voila - 4 lines!

$id_max = mysql_result(mysql_query("SELECT MAX(id) FROM table_name"),0,0)
or die("Could not execute query");
$entity = mysql_fetch_array(mysql_query("SELECT * FROM table." WHERE
id='$id_original'),MYSQL_ASSOC) or die("Could not select original
record"); // MYSQL_ASSOC forces a purely associative array and blocks
twin key dupes, vitally, it brings the keys out so they can be used in
line 4
$entity["id"]=$id_max+1;
mysql_query("INSERT INTO it_pages (".implode(", ",array_keys($Entity)).")
VALUES ('".implode("', '",array_values($Entity))."')");

Really struggled in cracking this nut - maybe there's an easier way out
there? Thanks to other posters for providing inspiration. Good luck - Tim
hasta
abajo
-1
kunky al correo BerliOS punto punto de
Hace 8 aos
This is very useful when the following query is used:

`SHOW TABLE STATUS`

Different versions of MySQL give different responses to this.

Therefore, it is better to use mysql_fetch_array() because the numeric
references given my mysql_fetch_row() give very different results.
hasta
abajo
-1
juancri en TAGnet punto org
Hace 11 aos
An example with mysql_fetch_array():

$result = mysql_query("SELECT name FROM table WHERE id=8");
$array = mysql_fetch_array($result);

$array will be:

array ([0] => "John", ['name'] => "John")

Then you can access to the results:

echo "The name is " . $array[0];
// or
echo "The name is " . $array['name'];

But the array is not referential. $array[0] is not a reference to
$array['name'] or $array['name'] to $array[0], they are not relationed
between. Because of that, the system will use excesive memory. With large
columns, try to use mysql_fetch_assoc() or mysql_fetch_row() only.
hasta
abajo
-1
barbieri en NOSPAMzero dot que
Hace 12 aos
Here is a suggestion to workaround the problem of NULL values:

// get associative array, with NULL values set
$record = mysql_fetch_array($queryID,MYSQL_ASSOC);

// set number indices
if(is_array($record))
{
$i = 0;
foreach($record as $element)
$record[$i++] = $element;
}

This way you can access $result array as usual, having NULL fields set.
hasta
abajo
-3
mjm al portero dot appstate punto edu
Hace 12 aos
If you perform a SELECT query which returns different columns with
duplicate names, like this:

--------
$sql_statement = "SELECT tbl1.colA, tbl2.colA FROM tbl1 LEFT JOIN tbl2 ON
tbl1.colC = tbl2.colC";

$result = mysql_query($sql_statement, $handle);

$row = mysql_fetch_array($result);
--------

Then

$row[0] is equivalent to $row["colA"]

but

$row[1] is not equivalent to $row["colA"].

Moral of the story: You must use the numerical index on the result row
arrays if column names are not unique, even if they come from different
tables within a JOIN. This would render mysql_fetch_assoc() useless.

[Ed. note - or you could do the usual 'select tbl1.colA as somename,
tbl2.colA as someothername. . .' which would obviate the problem. --
Torben]
hasta
abajo
-2
Anonymous
Hace 2 aos
If I use

<?php
while( $r []= mysql_fetch_array ( $sql ));
?>

so in array $r is one more entry then rows returned from the database.
hasta
abajo
-2
info en o08 dot com
Hace 5 aos
As opposite of mysql_fetch_array:

<?php
function mysql_insert_array ( $my_table , $my_array ) {
$keys = array_keys ( $my_array );
$values = array_values ( $my_array );
$sql = 'INSERT INTO ' . $my_table . '(' . implode ( ',' , $keys ) . ')
VALUES ("' . implode ( '","', $values ) . '")' ;
return( mysql_query ( $sql ));
}
# http://www.weberdev.com/get_example-4493.html
?>

Vous aimerez peut-être aussi