Re: var_dump() results

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At 12:32 PM -0500 1/13/08, Europus wrote:
It's pretty much the same. With var_dump(), values from the first row
of the table are iterated twice, the script is not looping through and
reporting all 2100 rows. Grossly similar behavior was observed with
print_r() and echo: while different data was reported by each, the
loop wouldn't loop. The first row was reported once (or twice) and
that was the end of that. I've tried foreach() also, same-same. It
doesn't loop, it just reports the first row.

Here's my code:

<?php

//connect to db
$link = mysql_pconnect('$host', '$login', '$passwd');
if (!$link) {
    die('Unable to connect : ' . mysql_error());
}
// make $table the current db
$db_selected = mysql_select_db('$table', $link);
if (!$db_selected) {
    die ('Unable to select $table : ' . mysql_error());
}

//get column data
	$sql    = "SELECT column2, column3 FROM $table";
	$result = mysql_query($sql);
	$row = mysql_fetch_row($result);

//loop through to display results
for($i=0; $i < count($row); $i++){
	var_dump($row);
	echo "<br /><br />";
?>

Ulex


As far as displaying only the first row, that's because you're only fetching the first row; count($row) in your for loop will always evaluate to 0 (if there are no results) or 1. You need to move the mysql_fetch_row() call into your loop; something like

	$result = mysql_query($sql);
	while ($row = mysql_fetch_row($result)) {
		var_dump($row);
		...
	}

or you could do

	$result = mysql_query($sql);
	$count = mysql_num_rows($result);
	for ($i=0; $i<$count; $i++) {
		var_dump($row);
		...
	}

As far as displaying the results twice, I'm not sure; that resembles the behavior of mysql_fetch_array() -

	http://us.php.net/manual/en/function.mysql-fetch-array.php

- where the default is to return data as both an associative and numerically-indexed array. I'm guessing that the above code isn't an exact cut-and-paste, as using single quotes (eg, mysql_pconnect('$host', '$login', '$passwd') does not interpolate variables, so that line will not work unless your username is actually '$login', etc. Which it probably isn't. Are you sure the real code isn't using mysql_fetch_array() instead of mysql_fetch_row()?

	steve


--
+--------------- my people are the people of the dessert, ---------------+
| Steve Edberg                                http://pgfsun.ucdavis.edu/ |
| UC Davis Genome Center                            sbedberg@xxxxxxxxxxx |
| Bioinformatics programming/database/sysadmin             (530)754-9127 |
+---------------- said t e lawrence, picking up his fork ----------------+

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux