Jump to content

2 database columns displaying the same values?


Omael
Go to solution Solved by Omael,

Recommended Posts

I have a simple query, but for some reason when I display the value of two columns they both return the value of the first column.
 

Syntax: [ Download ] [ Hide ] [ Select ]
<?php
mysql_connect($theserver,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT column1, column2 FROM questions WHERE id = '$_GET[id]'";

$result1=mysql_query($query);
$num1=mysql_numrows($result1);

mysql_close();

 $colum1=mysql_result($result1,"column1");
 $column2=mysql_result($result1,"column2");

?>

<?php echo $column1; ?> <?php echo $column2; ?>

 


For some reason column 2 displays the same value as column 1 but they have different values.

Link to comment
Share on other sites

That method is very insecure. Try this - 

<?php
	mysql_connect($theserver,$username,$password);
	@mysql_select_db($database) or die( "Unable to select database");
	
	
	if( preg_match( "/[0-9]/", $_GET['id'] ) )
	{ 
		$question_query = mysql_query( "SELECT column1, column2 FROM questions WHERE id = '$_GET[id]';" ) or die( 'MySQL Error: ' . mysql_error() );
		
		$num1 = mysql_num_rows($question_query);
		
		while( $row = mysql_fetch_object( $question_query ) )
		{
			echo $row->column1 . '<br />';
			echo $row->column2 . '<br />';
		}
	}  
	else
	{
		die( 'Invalid ID' );	
	}
	
	mysql_close();
	
?>

Link to comment
Share on other sites

  • Solution

I changed my query to this and it now works:

 


mysql_connect($theserver,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT column1, column2 FROM questions WHERE questionid = '$_GET[qid]'";
 
$result1=mysql_query($query);
$num1=mysql_numrows($result1);
 
while ($row = mysql_fetch_assoc($result1))
{
 $column1=$row['column1'];
 $column2=$row['column2'];
 
 }
mysql_close();
 
 
Link to comment
Share on other sites

Right, the problem was in the usage of  mysql_result().
 
Per the manual, that function (which is deprecated) takes two parameters. The first is the result resource, which you provided. The second parameter is the 'row' which you did not provide. You provided strings corresponding to the column names. But, the manual states:
 
 

The row number from the result that's being retrieved. Row numbers start at 0.


EDIT: Since you are only expecting 1 row, no need to use a while() loop.

if(mysql_numrows($result1))
{
    $row = mysql_fetch_assoc($result1);
    $column1=$row['column1'];
    $column2=$row['column2'];
}
else
{
    //Error condition
}
Edited by Psycho
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.