Michal Kotus
Michal Kotus

Reputation: 157

SELECT $x(php variable) FROM

I`m trying to echo a single string from mysql database. There are columns in database (en, es, de, it...) representing different languages and I want to select value from one row and from column with current language ($language="en", or $language="es"...). I have tried:

<?php
$result = mysqli_query($con, 'SELECT "' .$language. '" FROM page WHERE 
title="findInstructor" LIMIT 1');
$row = mysqli_fetch_row($result);
print_r($row[0]);
?>

The problem is, I am getting on screen value of $language variable, not a value from database. If I try it f.e. for english language, everything if fine:

$result = mysqli_query($con, 'SELECT en FROM page WHERE 
title="findInstructor" LIMIT 1');

Or if I could do something like:

$result = mysqli_query($con, 'SELECT * FROM page WHERE 
title="findInstructor" LIMIT 1');
....
print_r($row[$language]);

Thanks for an answer!

Upvotes: 1

Views: 156

Answers (2)

Sagar Gangwal
Sagar Gangwal

Reputation: 7965

As shown in below code if you put variable name in double quote,it's consider it as a static value.

'SELECT "' .$language. '" FROM page WHERE 
title="findInstructor" LIMIT 1'

So instead of this you have to try below code

'SELECT ' .$language. ' FROM page WHERE 
title="findInstructor" LIMIT 1'

Hope this will help you.

Upvotes: 1

Mohammad Hamedani
Mohammad Hamedani

Reputation: 3354

Because wrap $language with double quotes and SELECT treat it as a string and not column name. Try this:

<?php
    $result = mysqli_query($con, 'SELECT ' .$language. ' FROM page WHERE 
        title="findInstructor" LIMIT 1');
    $row = mysqli_fetch_row($result);
    print_r($row[0]);
?>

Upvotes: 4

Related Questions