0

I've created this function and I wonder if ever I COULD USE VARIABLES IN reading
column values on database table.

function vote($column, $imgid)//the $column stands for a variable handling a string I've passed from my previous call.  For now I am setting it as a string named "likes" which is equal to the name of 1 of my column in the table.
				{
					$query="SELECT $column FROM images WHERE imgid=$imgid";
					$result=mysql_query($query);
					if($column=mysql_fetch_assoc($result))
					{	
						$column=$column[$column]; // problem starts here. It prompts an error saying "Warning: Illegal offset type in C:\xampp\htdocs\wakiki\index.php";
						$column+=1;
					}
					$query="UPDATE images SET $column=$column WHERE imgid=$imgid";
					$result=mysql_query($query);
				}

Any help would be appreciated. Thanks

7
Contributors
8
Replies
9
Views
5 Years
Discussion Span
Last Post by scaiferw
0

Perhaps it is better if you provide a clear picture of what you are trying to achieve. Can you give a detailed example of what should happen with the values (without code).

0

change line 8 to
$column = $column + 1;

i gather that you are wanting to update column by one. can you post more info please bud

0

I think the problem is you are using $column for internal variables in your function. Change them to unique names like:

function vote($column, $imgid) {

    $query="SELECT $column FROM images WHERE imgid=$imgid";

    $result=mysql_query($query);

    if($row=mysql_fetch_assoc($result)) {
	
        $value=$row[$column];

        $value += 1; // or $value++ which is the same
    }

    // add this check to avoid an error if $row is false
    if($value and $value > 0) {

        $query="UPDATE images SET $column=$value WHERE imgid=$imgid";

        $result=mysql_query($query);
    }
}

Edited by broj1: Typos

0

yes broj1...you are right...the problem is because of variable value....because of using same variable name $column.....

Just change this:-

if($column=mysql_fetch_assoc($result))

to

if($row=mysql_fetch_assoc($result))

and

$value=$column[$column];

to

$value=$row[$column];

as directed by broj1

0

This may help. I sometimes use this in a WHILE loop, processed for each row of a result set. It's perhaps slightly less efficient, but can make code easier to read when I use the variables. With this code $row becomes $name, and so on for each attribute in the row.

// create a variable for each attribute
foreach($row as $var => $value){
  $$var = $value;
}
0

i think you need to make different var names, you are overwriting and using the same var for completely different things?

function vote($column, $imgid){
//the $column stands for a variable handling a string I've passed from my previous call.  For now I am setting it as a string named "likes" which is equal to the name of 1 of my column in the table.
	$query="SELECT $column FROM images WHERE imgid=$imgid";
	$result=mysql_query($query);
	if($row=mysql_fetch_assoc($result)){
		$column2=$row[$column];
		//$intcolumn+=1;//whats this supposed to do/be?
	}
	$query2="UPDATE images SET $column=$column WHERE imgid=$imgid";
	//$column = $column?? which is $column, $column2 or $intcolumn
	//$result=mysql_query($query);
}
0

Nope, it works just like that and creates a different variable for each attribute in the record being read out of the dataset. That snippet was taken from working code from one of my websites.

Here it is more in context:

while ($row = mysql_fetch_array($dataset)) {
  // create a variable for each attribute in row
  foreach($row as $var => $temp){
    $$var = $temp;
  }

  echo "<p>$lname, fname</p>";

}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.